diff --git a/src/prettify/lang/LangMumps.java b/src/prettify/lang/LangMumps.java
new file mode 100644
index 0000000..ceeee64
--- /dev/null
+++ b/src/prettify/lang/LangMumps.java
@@ -0,0 +1,148 @@
+// Copyright (C) 2011 Kitware Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package prettify.lang;
+
+import prettify.parser.Prettify;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * This is similar to the lang-mumps.js in JavaScript Prettify.
+ * <p/>
+ * All comments are adapted from the JavaScript Prettify.
+ * <p/>
+ * <p/>
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-mumps">(my SQL code)</pre>
+ * <p/>
+ * Commands, intrinsic functions and variables taken from ISO/IEC 11756:1999(E)
+ *
+ * @author chris.harris@kitware.com
+ *         <p/>
+ *         Known issues:
+ *         <p/>
+ *         - Currently can't distinguish between keywords and local or global variables having the same name
+ *         for exampe SET IF="IF?"
+ *         - m file are already used for MatLab hence using mumps.
+ */
+public class LangMumps extends Lang {
+
+    public LangMumps() {
+        List<List<Object>> _shortcutStylePatterns = new ArrayList<List<Object>>();
+        List<List<Object>> _fallthroughStylePatterns = new ArrayList<List<Object>>();
+
+        final String commands = "B|BREAK|" +
+                "C|CLOSE|" +
+                "D|DO|" +
+                "E|ELSE|" +
+                "F|FOR|" +
+                "G|GOTO|" +
+                "H|HALT|" +
+                "H|HANG|" +
+                "I|IF|" +
+                "J|JOB|" +
+                "K|KILL|" +
+                "L|LOCK|" +
+                "M|MERGE|" +
+                "N|NEW|" +
+                "O|OPEN|" +
+                "Q|QUIT|" +
+                "R|READ|" +
+                "S|SET|" +
+                "TC|TCOMMIT|" +
+                "TRE|TRESTART|" +
+                "TRO|TROLLBACK|" +
+                "TS|TSTART|" +
+                "U|USE|" +
+                "V|VIEW|" +
+                "W|WRITE|" +
+                "X|XECUTE";
+
+        final String intrinsicVariables = "D|DEVICE|" +
+                "EC|ECODE|" +
+                "ES|ESTACK|" +
+                "ET|ETRAP|" +
+                "H|HOROLOG|" +
+                "I|IO|" +
+                "J|JOB|" +
+                "K|KEY|" +
+                "P|PRINCIPAL|" +
+                "Q|QUIT|" +
+                "ST|STACK|" +
+                "S|STORAGE|" +
+                "SY|SYSTEM|" +
+                "T|TEST|" +
+                "TL|TLEVEL|" +
+                "TR|TRESTART|" +
+                "X|" +
+                "Y|" +
+                "Z[A-Z]*|";
+
+        final String intrinsicFunctions = "A|ASCII|" +
+                "C|CHAR|" +
+                "D|DATA|" +
+                "E|EXTRACT|" +
+                "F|FIND|" +
+                "FN|FNUMBER|" +
+                "G|GET|" +
+                "J|JUSTIFY|" +
+                "L|LENGTH|" +
+                "NA|NAME|" +
+                "O|ORDER|" +
+                "P|PIECE|" +
+                "QL|QLENGTH|" +
+                "QS|QSUBSCRIPT|" +
+                "Q|QUERY|" +
+                "R|RANDOM|" +
+                "RE|REVERSE|" +
+                "S|SELECT|" +
+                "ST|STACK|" +
+                "T|TEXT|" +
+                "TR|TRANSLATE|" +
+                "V|VIEW|" +
+                "Z[A-Z]*|";
+
+        final String intrinsic = intrinsicVariables + intrinsicFunctions;
+
+        // Whitespace
+        _shortcutStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_PLAIN, Pattern.compile("^[\t\n\r \\xA0]+"), null, "\t\n\r " + Character.toString((char) 0xA0)}));
+        // A double or single quoted, possibly multi-line, string.
+        _shortcutStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_STRING, Pattern.compile("^(?:\"(?:[^\"]|\\\\.)*\")"), null, "\""}));
+
+        // A line comment that starts with ;
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_COMMENT, Pattern.compile("^;[^\\r\\n]*"), null, ";"}));
+        // Add intrinsic variables and functions as declarations, there not really but it mean
+        // they will hilighted differently from commands.
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_DECLARATION, Pattern.compile("^(?:\\$(?:" + intrinsic + "))\\b", Pattern.CASE_INSENSITIVE), null}));
+        // Add commands as keywords
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_KEYWORD, Pattern.compile("^(?:[^\\$]" + commands + ")\\b", Pattern.CASE_INSENSITIVE), null}));
+        // A number is a decimal real literal or in scientific notation.
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_LITERAL, Pattern.compile("^[+-]?(?:(?:\\.\\d+|\\d+(?:\\.\\d*)?)(?:E[+\\-]?\\d+)?)", Pattern.CASE_INSENSITIVE)}));
+        // An identifier
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_PLAIN, Pattern.compile("^[a-z][a-zA-Z0-9]*", Pattern.CASE_INSENSITIVE)}));
+        // Exclude $ % and ^
+        _fallthroughStylePatterns.add(Arrays.asList(new Object[]{Prettify.PR_PUNCTUATION, Pattern.compile("^[^\\w\\t\\n\\r\\xA0\\\"\\$;%\\^]|_")}));
+
+        setShortcutStylePatterns(_shortcutStylePatterns);
+        setFallthroughStylePatterns(_fallthroughStylePatterns);
+    }
+
+    public static List<String> getFileExtensions() {
+        return Arrays.asList(new String[]{"mumps"});
+    }
+}
diff --git a/test/prettify/PrettifyTest.java b/test/prettify/PrettifyTest.java
index 63c34d6..6253447 100644
--- a/test/prettify/PrettifyTest.java
+++ b/test/prettify/PrettifyTest.java
@@ -169,6 +169,7 @@
     test("tcl", "tcl_lang", false);
     test("r", "r_lang", false);
     test("erlang", "erlang", false);
+    test("mumps", "mumps", false);
   }
 
   /**
diff --git a/test/prettify/PrettifyTest/result/mumps.txt b/test/prettify/PrettifyTest/result/mumps.txt
new file mode 100644
index 0000000..a83dcf1
--- /dev/null
+++ b/test/prettify/PrettifyTest/result/mumps.txt
@@ -0,0 +1,15 @@
+`PLNHDR `END`COM; -- prt/display header`END`PLN
+ `END`KWDN`END`PLN `END`KWDX`END`PUN,`END`KWDI`END`PLN
+ `END`KWDI`END`PLN `END`PUN'`END`DEC$D`END`PUN(`END`PLNVALMHDR`END`PUN)`END`PLN `END`KWDX`END`PUN:`END`DEC$G`END`PUN(`END`PLNVALM`END`PUN(`END`STR"HDR"`END`PUN))]`END`STR""`END`PLN VALM`END`PUN(`END`STR"HDR"`END`PUN)`END`PLN
+ `END`COM; -- prt hdr line`END`PLN
+ `END`KWDW`END`PUN:'`END`DEC$D`END`PUN(`END`PLNVALMPG1`END`PUN)`END`PLN `END`PUN@`END`PLNIOF `END`KWDK`END`PLN VALMPG1
+ `END`KWDW`END`PUN:`END`PLNVALMCC `END`DEC$C`END`PUN(`END`LIT13`END`PUN)_`END`PLNIOUON`END`PUN_`END`DEC$C`END`PUN(`END`LIT13`END`PUN)_`END`PLNIOINHI`END`PUN_`END`DEC$C`END`PUN(`END`LIT13`END`PUN)`END`PLN       `END`COM; -- turn on undln/hi`END`PLN
+ `END`KWDI`END`PLN `END`DEC$E`END`PUN(`END`PLNIOST`END`PUN,`END`LIT1`END`PUN,`END`LIT2`END`PUN)=`END`STR"C-"`END`PLN `END`KWDD`END`PLN IOXY^VALM4`END`PUN(`END`LIT0`END`PUN,`END`LIT0`END`PUN)`END`PLN            `END`COM; -- position cursor`END`PLN
+ `END`KWDW`END`PLN `END`DEC$E`END`PUN(`END`PLNVALM`END`PUN(`END`STR"TITLE"`END`PUN),`END`LIT1`END`PUN,`END`LIT30`END`PUN)`END`PLN                         `END`COM; -- prt title`END`PLN
+ `END`KWDW`END`PUN:`END`PLNVALMCC IOINORM`END`PUN,`END`PLNIOUON                           `END`COM; -- turn off hi`END`PLN
+ `END`KWDW`END`PLN `END`DEC$J`END`PUN(`END`STR""`END`PUN,`END`LIT30`END`PUN-`END`DEC$L`END`PUN(`END`PLNVALM`END`PUN(`END`STR"TITLE"`END`PUN)))`END`PLN                    `END`COM; -- fill in w/blanks`END`PLN
+ `END`KWDI`END`PLN `END`DEC$E`END`PUN(`END`PLNIOST`END`PUN,`END`LIT1`END`PUN,`END`LIT2`END`PUN)=`END`STR"C-"`END`PLN `END`KWDW`END`PLN `END`DEC$C`END`PUN(`END`LIT13`END`PUN)`END`PLN `END`KWDD`END`PLN IOXY^VALM4`END`PUN(`END`LIT30`END`PUN,`END`LIT0`END`PUN)`END`PLN  `END`COM; -- position cursor`END`PLN
+ `END`KWDW`END`PLN `END`DEC$J`END`PUN(`END`STR""`END`PUN,((`END`PLNVALMWD`END`LIT-80`END`PUN)/`END`LIT2`END`PUN)),`END`PLN$$HTE^XLFDT`END`PUN(`END`DEC$H`END`PUN,`END`LIT1`END`PUN),`END`DEC$J`END`PUN(`END`STR""`END`PUN,`END`LIT10`END`PUN+((`END`PLNVALMWD`END`LIT-80`END`PUN)/`END`LIT2`END`PUN)),`END`STR"Page: "`END`PUN,`END`DEC$J`END`PUN(`END`PLNVALMPGE`END`PUN,`END`LIT4`END`PUN),`END`STR" of "`END`PUN,`END`DEC$J`END`PUN(`END`PLN$$PAGE^VALM4`END`PUN(`END`PLNVALMCNT`END`PUN,`END`PLNVALM`END`PUN(`END`STR"LINES"`END`PUN)),`END`LIT4`END`PUN)_`END`DEC$S`END`PUN(`END`DEC$D`END`PUN(`END`PLNVALMORE`END`PUN):`END`STR"+"`END`PUN,`END`LIT1`END`PUN:`END`STR" "`END`PUN)`END`PLN `END`COM; -- prt rest of hdr`END`PLN
+ `END`KWDW`END`PUN:`END`PLNVALMCC IOUOFF `END`KWDI`END`PLN `END`DEC$E`END`PUN(`END`PLNIOST`END`PUN,`END`LIT1`END`PUN,`END`LIT2`END`PUN)=`END`STR"C-"`END`PLN `END`KWDD`END`PLN IOXY^VALM4`END`PUN(`END`LIT0`END`PUN,`END`LIT0`END`PUN)`END`PLN `END`COM; -- turn off undln`END`PLN
+ `END`KWDF`END`PLN `END`KWDI`END`PUN=`END`LIT1`END`PUN:`END`LIT1`END`PUN:`END`PLNVALM`END`PUN(`END`STR"TM"`END`PUN)`END`LIT-3`END`PLN `END`KWDW`END`PLN `END`PUN!,`END`DEC$S`END`PUN('`END`DEC$D`END`PUN(`END`PLNVALMHDR`END`PUN(`END`KWDI`END`PUN)):`END`STR""`END`PUN,`END`DEC$L`END`PUN(`END`PLNVALMHDR`END`PUN(`END`KWDI`END`PUN))&gt;(`END`PLNVALMWD`END`LIT-1`END`PUN):`END`PLN$`END`DEC$EXTRACT`END`PLN^VALM4`END`PUN(`END`DEC$G`END`PUN(`END`PLNVALMHDR`END`PUN(`END`KWDI`END`PUN))),`END`LIT1`END`PUN:`END`PLNVALMHDR`END`PUN(`END`KWDI`END`PUN))`END`PLN `END`COM; -- prt hdr`END`PLN
+ `END`KWDQ`END'
diff --git a/test/prettify/PrettifyTest/source/mumps.txt b/test/prettify/PrettifyTest/source/mumps.txt
new file mode 100644
index 0000000..25aa0f4
--- /dev/null
+++ b/test/prettify/PrettifyTest/source/mumps.txt
@@ -0,0 +1,15 @@
+HDR ; -- prt/display header
+ N X,I
+ I '$D(VALMHDR) X:$G(VALM("HDR"))]"" VALM("HDR")
+ ; -- prt hdr line
+ W:'$D(VALMPG1) @IOF K VALMPG1
+ W:VALMCC $C(13)_IOUON_$C(13)_IOINHI_$C(13)       ; -- turn on undln/hi
+ I $E(IOST,1,2)="C-" D IOXY^VALM4(0,0)            ; -- position cursor
+ W $E(VALM("TITLE"),1,30)                         ; -- prt title
+ W:VALMCC IOINORM,IOUON                           ; -- turn off hi
+ W $J("",30-$L(VALM("TITLE")))                    ; -- fill in w/blanks
+ I $E(IOST,1,2)="C-" W $C(13) D IOXY^VALM4(30,0)  ; -- position cursor
+ W $J("",((VALMWD-80)/2)),$$HTE^XLFDT($H,1),$J("",10+((VALMWD-80)/2)),"Page: ",$J(VALMPGE,4)," of ",$J($$PAGE^VALM4(VALMCNT,VALM("LINES")),4)_$S($D(VALMORE):"+",1:" ") ; -- prt rest of hdr
+ W:VALMCC IOUOFF I $E(IOST,1,2)="C-" D IOXY^VALM4(0,0) ; -- turn off undln
+ F I=1:1:VALM("TM")-3 W !,$S('$D(VALMHDR(I)):"",$L(VALMHDR(I))>(VALMWD-1):$$EXTRACT^VALM4($G(VALMHDR(I))),1:VALMHDR(I)) ; -- prt hdr
+ Q
\ No newline at end of file
