| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | 
							- /**
 
-  * @param {string} value
 
-  * @returns {RegExp}
 
-  * */
 
- /**
 
-  * @param {RegExp | string } re
 
-  * @returns {string}
 
-  */
 
- function source(re) {
 
-   if (!re) return null;
 
-   if (typeof re === "string") return re;
 
-   return re.source;
 
- }
 
- /**
 
-  * @param {RegExp | string } re
 
-  * @returns {string}
 
-  */
 
- function anyNumberOfTimes(re) {
 
-   return concat('(', re, ')*');
 
- }
 
- /**
 
-  * @param {...(RegExp | string) } args
 
-  * @returns {string}
 
-  */
 
- function concat(...args) {
 
-   const joined = args.map((x) => source(x)).join("");
 
-   return joined;
 
- }
 
- /** @type LanguageFn */
 
- function gams(hljs) {
 
-   const KEYWORDS = {
 
-     keyword:
 
-       'abort acronym acronyms alias all and assign binary card diag display ' +
 
-       'else eq file files for free ge gt if integer le loop lt maximizing ' +
 
-       'minimizing model models ne negative no not option options or ord ' +
 
-       'positive prod put putpage puttl repeat sameas semicont semiint smax ' +
 
-       'smin solve sos1 sos2 sum system table then until using while xor yes',
 
-     literal:
 
-       'eps inf na',
 
-     built_in:
 
-       'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +
 
-       'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +
 
-       'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +
 
-       'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +
 
-       'randBinomial randLinear randTriangle round rPower sigmoid sign ' +
 
-       'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +
 
-       'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +
 
-       'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +
 
-       'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +
 
-       'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +
 
-       'handleCollect handleDelete handleStatus handleSubmit heapFree ' +
 
-       'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +
 
-       'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +
 
-       'timeElapsed timeExec timeStart'
 
-   };
 
-   const PARAMS = {
 
-     className: 'params',
 
-     begin: /\(/,
 
-     end: /\)/,
 
-     excludeBegin: true,
 
-     excludeEnd: true
 
-   };
 
-   const SYMBOLS = {
 
-     className: 'symbol',
 
-     variants: [
 
-       {
 
-         begin: /=[lgenxc]=/
 
-       },
 
-       {
 
-         begin: /\$/
 
-       }
 
-     ]
 
-   };
 
-   const QSTR = { // One-line quoted comment string
 
-     className: 'comment',
 
-     variants: [
 
-       {
 
-         begin: '\'',
 
-         end: '\''
 
-       },
 
-       {
 
-         begin: '"',
 
-         end: '"'
 
-       }
 
-     ],
 
-     illegal: '\\n',
 
-     contains: [hljs.BACKSLASH_ESCAPE]
 
-   };
 
-   const ASSIGNMENT = {
 
-     begin: '/',
 
-     end: '/',
 
-     keywords: KEYWORDS,
 
-     contains: [
 
-       QSTR,
 
-       hljs.C_LINE_COMMENT_MODE,
 
-       hljs.C_BLOCK_COMMENT_MODE,
 
-       hljs.QUOTE_STRING_MODE,
 
-       hljs.APOS_STRING_MODE,
 
-       hljs.C_NUMBER_MODE
 
-     ]
 
-   };
 
-   const COMMENT_WORD = /[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/;
 
-   const DESCTEXT = { // Parameter/set/variable description text
 
-     begin: /[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,
 
-     excludeBegin: true,
 
-     end: '$',
 
-     endsWithParent: true,
 
-     contains: [
 
-       QSTR,
 
-       ASSIGNMENT,
 
-       {
 
-         className: 'comment',
 
-         // one comment word, then possibly more
 
-         begin: concat(
 
-           COMMENT_WORD,
 
-           // [ ] because \s would be too broad (matching newlines)
 
-           anyNumberOfTimes(concat(/[ ]+/, COMMENT_WORD))
 
-         ),
 
-         relevance: 0
 
-       }
 
-     ]
 
-   };
 
-   return {
 
-     name: 'GAMS',
 
-     aliases: ['gms'],
 
-     case_insensitive: true,
 
-     keywords: KEYWORDS,
 
-     contains: [
 
-       hljs.COMMENT(/^\$ontext/, /^\$offtext/),
 
-       {
 
-         className: 'meta',
 
-         begin: '^\\$[a-z0-9]+',
 
-         end: '$',
 
-         returnBegin: true,
 
-         contains: [
 
-           {
 
-             className: 'meta-keyword',
 
-             begin: '^\\$[a-z0-9]+'
 
-           }
 
-         ]
 
-       },
 
-       hljs.COMMENT('^\\*', '$'),
 
-       hljs.C_LINE_COMMENT_MODE,
 
-       hljs.C_BLOCK_COMMENT_MODE,
 
-       hljs.QUOTE_STRING_MODE,
 
-       hljs.APOS_STRING_MODE,
 
-       // Declarations
 
-       {
 
-         beginKeywords:
 
-           'set sets parameter parameters variable variables ' +
 
-           'scalar scalars equation equations',
 
-         end: ';',
 
-         contains: [
 
-           hljs.COMMENT('^\\*', '$'),
 
-           hljs.C_LINE_COMMENT_MODE,
 
-           hljs.C_BLOCK_COMMENT_MODE,
 
-           hljs.QUOTE_STRING_MODE,
 
-           hljs.APOS_STRING_MODE,
 
-           ASSIGNMENT,
 
-           DESCTEXT
 
-         ]
 
-       },
 
-       { // table environment
 
-         beginKeywords: 'table',
 
-         end: ';',
 
-         returnBegin: true,
 
-         contains: [
 
-           { // table header row
 
-             beginKeywords: 'table',
 
-             end: '$',
 
-             contains: [DESCTEXT]
 
-           },
 
-           hljs.COMMENT('^\\*', '$'),
 
-           hljs.C_LINE_COMMENT_MODE,
 
-           hljs.C_BLOCK_COMMENT_MODE,
 
-           hljs.QUOTE_STRING_MODE,
 
-           hljs.APOS_STRING_MODE,
 
-           hljs.C_NUMBER_MODE
 
-           // Table does not contain DESCTEXT or ASSIGNMENT
 
-         ]
 
-       },
 
-       // Function definitions
 
-       {
 
-         className: 'function',
 
-         begin: /^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,
 
-         returnBegin: true,
 
-         contains: [
 
-           { // Function title
 
-             className: 'title',
 
-             begin: /^[a-z0-9_]+/
 
-           },
 
-           PARAMS,
 
-           SYMBOLS
 
-         ]
 
-       },
 
-       hljs.C_NUMBER_MODE,
 
-       SYMBOLS
 
-     ]
 
-   };
 
- }
 
- module.exports = gams;
 
 
  |