// 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. /** * @fileoverview * Registers a language handler for MUMPS. * * * To use, include prettify.js and this file in your HTML page. * Then put your code in an HTML tag like *
(my SQL code)* * Commands, intrinsic functions and variables taken from ISO/IEC 11756:1999(E) * * @author chris.harris@kitware.com * * Known issues: * * - 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. */ (function () { var 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'; var 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]*|'; var 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]*|'; var intrinsic = intrinsicVariables + intrinsicFunctions; var shortcutStylePatterns = [ // Whitespace [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], // A double or single quoted, possibly multi-line, string. [PR['PR_STRING'], /^(?:"(?:[^"]|\\.)*")/, null, '"'] ]; var fallthroughStylePatterns = [ // A line comment that starts with ; [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'], // Add intrinsic variables and functions as declarations, there not really but it mean // they will hilighted differently from commands. [PR['PR_DECLARATION'], new RegExp('^(?:\\$(?:' + intrinsic + '))\\b', 'i'), null], // Add commands as keywords [PR['PR_KEYWORD'], new RegExp('^(?:[^\\$]' + commands + ')\\b', 'i'), null], // A number is a decimal real literal or in scientific notation. [PR['PR_LITERAL'], /^[+-]?(?:(?:\.\d+|\d+(?:\.\d*)?)(?:E[+\-]?\d+)?)/i], // An identifier [PR['PR_PLAIN'], /^[a-z][a-zA-Z0-9]*/i], // Exclude $ % and ^ [PR['PR_PUNCTUATION'], /^[^\w\t\n\r\xA0\"\$;%\^]|_/] ]; // Can't use m as its already used for MatLab PR.registerLangHandler(PR.createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns), ['mumps']); })();