1{"version":3,"sources":["webpack:///./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.js"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,sDAAsD;AAC/D,SAAS,SAAS,YAAY,iCAAiC;AAC/D,SAAS,sDAAsD;AAC/D,SAAS;AACT;AACA;AACO;AACP;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAyD;AAClE,SAAS,yDAAyD;AAClE,SAAS,yDAAyD;AAClE,SAAS,yDAAyD;AAClE,SAAS,UAAU,YAAY,mCAAmC;AAClE,SAAS,yDAAyD;AAClE,SAAS,UAAU,YAAY,6BAA6B;AAC5D,SAAS,oDAAoD;AAC7D,SAAS,oDAAoD;AAC7D,SAAS,SAAS,YAAY,6BAA6B;AAC3D,SAAS,mDAAmD;AAC5D,SAAS,wDAAwD;AACjE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+BAA+B,YAAY,EAAE;AAC1D;AACA,aAAa,2BAA2B,mBAAmB,EAAE;AAC7D;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA,uCAAuC,iCAAiC;AACxE,aAAa;AACb;AACA;AACA,uCAAuC,iCAAiC;AACxE,aAAa;AACb;AACA;AACA,uCAAuC,6BAA6B;AACpE,aAAa;AACb;AACA;AACA,uCAAuC,6BAA6B;AACpE,aAAa;AACb;AACA,0BAA0B;AAC1B,uCAAuC,2BAA2B;AAClE,aAAa;AACb;AACA,0BAA0B;AAC1B,uCAAuC,2BAA2B;AAClE,aAAa;AACb;AACA;AACA;AACA,uCAAuC,iCAAiC;AACxE,aAAa;AACb,aAAa,sBAAsB,2BAA2B,EAAE;AAChE,aAAa,UAAU,YAAY,+BAA+B,EAAE;AACpE;AACA;AACA;AACA,wCAAwC,iCAAiC;AACzE,aAAa;AACb;AACA;AACA,wCAAwC,6BAA6B;AACrE,aAAa;AACb;AACA,2BAA2B;AAC3B,uCAAuC,2BAA2B;AAClE,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,iCAAiC,0BAA0B,EAAE;AAC1E;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,aAAa,8BAA8B,wBAAwB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE,qCAAqC,qBAAqB;AAC1D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE,qCAAqC;AACrC;AACA;AACA,aAAa;AACb;AACA,aAAa,wBAAwB,iCAAiC,EAAE;AACxE;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa,YAAY,YAAY,mBAAmB,EAAE;AAC1D;AACA,aAAa,wBAAwB,iCAAiC,EAAE;AACxE,aAAa,wBAAwB,6BAA6B,EAAE;AACpE,aAAa,YAAY,YAAY,2BAA2B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iCAAiC;AACzE,aAAa;AACb;AACA,aAAa,uBAAuB,uBAAuB,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6BAA6B;AAC1D;AACA,sCAAsC,mBAAmB;AACzD,4CAA4C,gBAAgB;AAC5D,qCAAqC;AACrC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,aAAa,4BAA4B,mBAAmB,EAAE;AAC9D;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,aAAa,yCAAyC,sBAAsB,EAAE;AAC9E;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,eAAe,qBAAqB,kBAAkB,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA,aAAa,mCAAmC,kBAAkB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE,qCAAqC;AACrC;AACA;AACA,aAAa;AACb,aAAa,sBAAsB,uBAAuB,EAAE;AAC5D,aAAa,sBAAsB,kCAAkC;AACrE;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb;AACA;AACA,aAAa,sBAAsB,sCAAsC,EAAE;AAC3E;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA,qBAAqB,yBAAyB;AAC9C,qBAAqB,sBAAsB;AAC3C,qBAAqB;AACrB;AACA,aAAa;AACb,aAAa,wBAAwB,yBAAyB,EAAE;AAChE;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,aAAa,4BAA4B,kBAAkB;AAC3D;AACA;AACA","file":"42.42.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Artyom Shalkhakov. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *\n * Based on the ATS/Postiats lexer by Hongwei Xi.\n *--------------------------------------------------------------------------------------------*/\nexport var conf = {\n comments: {\n lineComment: '//',\n blockComment: ['(*', '*)']\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ['<', '>']\n ],\n autoClosingPairs: [\n { open: '\"', close: '\"', notIn: ['string', 'comment'] },\n { open: '{', close: '}', notIn: ['string', 'comment'] },\n { open: '[', close: ']', notIn: ['string', 'comment'] },\n { open: '(', close: ')', notIn: ['string', 'comment'] }\n ]\n};\nexport var language = {\n tokenPostfix: '.pats',\n // TODO: staload and dynload are followed by a special kind of string literals\n // with {$IDENTIFER} variables, and it also may make sense to highlight\n // the punctuation (. and / and \\) differently.\n // Set defaultToken to invalid to see what you do not tokenize yet\n defaultToken: 'invalid',\n // keyword reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing_token.dats\n keywords: [\n //\n 'abstype',\n 'abst0ype',\n 'absprop',\n 'absview',\n 'absvtype',\n 'absviewtype',\n 'absvt0ype',\n 'absviewt0ype',\n //\n 'as',\n //\n 'and',\n //\n 'assume',\n //\n 'begin',\n //\n /*\n \"case\", // CASE\n */\n //\n 'classdec',\n //\n 'datasort',\n //\n 'datatype',\n 'dataprop',\n 'dataview',\n 'datavtype',\n 'dataviewtype',\n //\n 'do',\n //\n 'end',\n //\n 'extern',\n 'extype',\n 'extvar',\n //\n 'exception',\n //\n 'fn',\n 'fnx',\n 'fun',\n //\n 'prfn',\n 'prfun',\n //\n 'praxi',\n 'castfn',\n //\n 'if',\n 'then',\n 'else',\n //\n 'ifcase',\n //\n 'in',\n //\n 'infix',\n 'infixl',\n 'infixr',\n 'prefix',\n 'postfix',\n //\n 'implmnt',\n 'implement',\n //\n 'primplmnt',\n 'primplement',\n //\n 'import',\n //\n /*\n \"lam\", // LAM\n \"llam\", // LLAM\n \"fix\", // FIX\n */\n //\n 'let',\n //\n 'local',\n //\n 'macdef',\n 'macrodef',\n //\n 'nonfix',\n //\n 'symelim',\n 'symintr',\n 'overload',\n //\n 'of',\n 'op',\n //\n 'rec',\n //\n 'sif',\n 'scase',\n //\n 'sortdef',\n /*\n // HX: [sta] is now deprecated\n */\n 'sta',\n 'stacst',\n 'stadef',\n 'static',\n /*\n \"stavar\", // T_STAVAR\n */\n //\n 'staload',\n 'dynload',\n //\n 'try',\n //\n 'tkindef',\n //\n /*\n \"type\", // TYPE\n */\n 'typedef',\n 'propdef',\n 'viewdef',\n 'vtypedef',\n 'viewtypedef',\n //\n /*\n \"val\", // VAL\n */\n 'prval',\n //\n 'var',\n 'prvar',\n //\n 'when',\n 'where',\n //\n /*\n \"for\", // T_FOR\n \"while\", // T_WHILE\n */\n //\n 'with',\n //\n 'withtype',\n 'withprop',\n 'withview',\n 'withvtype',\n 'withviewtype' // WITHVIEWTYPE\n //\n ],\n keywords_dlr: [\n '$delay',\n '$ldelay',\n //\n '$arrpsz',\n '$arrptrsize',\n //\n '$d2ctype',\n //\n '$effmask',\n '$effmask_ntm',\n '$effmask_exn',\n '$effmask_ref',\n '$effmask_wrt',\n '$effmask_all',\n //\n '$extern',\n '$extkind',\n '$extype',\n '$extype_struct',\n //\n '$extval',\n '$extfcall',\n '$extmcall',\n //\n '$literal',\n //\n '$myfilename',\n '$mylocation',\n '$myfunction',\n //\n '$lst',\n '$lst_t',\n '$lst_vt',\n '$list',\n '$list_t',\n '$list_vt',\n //\n '$rec',\n '$rec_t',\n '$rec_vt',\n '$record',\n '$record_t',\n '$record_vt',\n //\n '$tup',\n '$tup_t',\n '$tup_vt',\n '$tuple',\n '$tuple_t',\n '$tuple_vt',\n //\n '$break',\n '$continue',\n //\n '$raise',\n //\n '$showtype',\n //\n '$vcopyenv_v',\n '$vcopyenv_vt',\n //\n '$tempenver',\n //\n '$solver_assert',\n '$solver_verify' // T_DLRSOLVERIFY\n ],\n keywords_srp: [\n //\n '#if',\n '#ifdef',\n '#ifndef',\n //\n '#then',\n //\n '#elif',\n '#elifdef',\n '#elifndef',\n //\n '#else',\n '#endif',\n //\n '#error',\n //\n '#prerr',\n '#print',\n //\n '#assert',\n //\n '#undef',\n '#define',\n //\n '#include',\n '#require',\n //\n '#pragma',\n '#codegen2',\n '#codegen3' // T_SRPCODEGEN3 // for level-3 codegen\n //\n // HX: end of special tokens\n //\n ],\n irregular_keyword_list: [\n 'val+',\n 'val-',\n 'val',\n 'case+',\n 'case-',\n 'case',\n 'addr@',\n 'addr',\n 'fold@',\n 'free@',\n 'fix@',\n 'fix',\n 'lam@',\n 'lam',\n 'llam@',\n 'llam',\n 'viewt@ype+',\n 'viewt@ype-',\n 'viewt@ype',\n 'viewtype+',\n 'viewtype-',\n 'viewtype',\n 'view+',\n 'view-',\n 'view@',\n 'view',\n 'type+',\n 'type-',\n 'type',\n 'vtype+',\n 'vtype-',\n 'vtype',\n 'vt@ype+',\n 'vt@ype-',\n 'vt@ype',\n 'viewt@ype+',\n 'viewt@ype-',\n 'viewt@ype',\n 'viewtype+',\n 'viewtype-',\n 'viewtype',\n 'prop+',\n 'prop-',\n 'prop',\n 'type+',\n 'type-',\n 'type',\n 't@ype',\n 't@ype+',\n 't@ype-',\n 'abst@ype',\n 'abstype',\n 'absviewt@ype',\n 'absvt@ype',\n 'for*',\n 'for',\n 'while*',\n 'while'\n ],\n keywords_types: [\n 'bool',\n 'double',\n 'byte',\n 'int',\n 'short',\n 'char',\n 'void',\n 'unit',\n 'long',\n 'float',\n 'string',\n 'strptr'\n ],\n // TODO: reference for this?\n keywords_effects: [\n '0',\n 'fun',\n 'clo',\n 'prf',\n 'funclo',\n 'cloptr',\n 'cloref',\n 'ref',\n 'ntm',\n '1' // all effects\n ],\n operators: [\n '@',\n '!',\n '|',\n '`',\n ':',\n '$',\n '.',\n '=',\n '#',\n '~',\n //\n '..',\n '...',\n //\n '=>',\n // \"=<\", // T_EQLT\n '=<>',\n '=/=>',\n '=>>',\n '=/=>>',\n //\n '<',\n '>',\n //\n '><',\n //\n '.<',\n '>.',\n //\n '.<>.',\n //\n '->',\n //\"-<\", // T_MINUSLT\n '-<>' // T_MINUSLTGT\n //\n /*\n \":<\", // T_COLONLT\n */\n ],\n brackets: [\n { open: ',(', close: ')', token: 'delimiter.parenthesis' },\n { open: '`(', close: ')', token: 'delimiter.parenthesis' },\n { open: '%(', close: ')', token: 'delimiter.parenthesis' },\n { open: \"'(\", close: ')', token: 'delimiter.parenthesis' },\n { open: \"'{\", close: '}', token: 'delimiter.parenthesis' },\n { open: '@(', close: ')', token: 'delimiter.parenthesis' },\n { open: '@{', close: '}', token: 'delimiter.brace' },\n { open: '@[', close: ']', token: 'delimiter.square' },\n { open: '#[', close: ']', token: 'delimiter.square' },\n { open: '{', close: '}', token: 'delimiter.curly' },\n { open: '[', close: ']', token: 'delimiter.square' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n { open: '<', close: '>', token: 'delimiter.angle' }\n ],\n // we include these common regular expressions\n symbols: /[=><!~?:&|+\\-*\\/\\^%]+/,\n IDENTFST: /[a-zA-Z_]/,\n IDENTRST: /[a-zA-Z0-9_'$]/,\n symbolic: /[%&+-./:=@~`^|*!$#?<>]/,\n digit: /[0-9]/,\n digitseq0: /@digit*/,\n xdigit: /[0-9A-Za-z]/,\n xdigitseq0: /@xdigit*/,\n INTSP: /[lLuU]/,\n FLOATSP: /[fFlL]/,\n fexponent: /[eE][+-]?[0-9]+/,\n fexponent_bin: /[pP][+-]?[0-9]+/,\n deciexp: /\\.[0-9]*@fexponent?/,\n hexiexp: /\\.[0-9a-zA-Z]*@fexponent_bin?/,\n irregular_keywords: /val[+-]?|case[+-]?|addr\\@?|fold\\@|free\\@|fix\\@?|lam\\@?|llam\\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\\*?|while\\*?/,\n ESCHAR: /[ntvbrfa\\\\\\?'\"\\(\\[\\{]/,\n start: 'root',\n // The main tokenizer for ATS/Postiats\n // reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing.dats\n tokenizer: {\n root: [\n // lexing_blankseq0\n { regex: /[ \\t\\r\\n]+/, action: { token: '' } },\n // NOTE: (*) is an invalid ML-like comment!\n { regex: /\\(\\*\\)/, action: { token: 'invalid' } },\n {\n regex: /\\(\\*/,\n action: { token: 'comment', next: 'lexing_COMMENT_block_ml' }\n },\n {\n regex: /\\(/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /\\)/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /\\[/,\n action: '@brackets' /*{ token: 'delimiter.bracket' }*/\n },\n {\n regex: /\\]/,\n action: '@brackets' /*{ token: 'delimiter.bracket' }*/\n },\n {\n regex: /\\{/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n {\n regex: /\\}/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n // lexing_COMMA\n {\n regex: /,\\(/,\n action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/\n },\n { regex: /,/, action: { token: 'delimiter.comma' } },\n { regex: /;/, action: { token: 'delimiter.semicolon' } },\n // lexing_AT\n {\n regex: /@\\(/,\n action: '@brackets' /* { token: 'delimiter.parenthesis' }*/\n },\n {\n regex: /@\\[/,\n action: '@brackets' /* { token: 'delimiter.bracket' }*/\n },\n {\n regex: /@\\{/,\n action: '@brackets' /*{ token: 'delimiter.brace' }*/\n },\n // lexing_COLON\n {\n regex: /:</,\n action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }\n },\n /*\n lexing_DOT:\n\n . // SYMBOLIC => lexing_IDENT_sym\n . FLOATDOT => lexing_FLOAT_deciexp\n . DIGIT => T_DOTINT\n */\n { regex: /\\.@symbolic+/, action: { token: 'identifier.sym' } },\n // FLOATDOT case\n {\n regex: /\\.@digit*@fexponent@FLOATSP*/,\n action: { token: 'number.float' }\n },\n { regex: /\\.@digit+/, action: { token: 'number.float' } },\n // lexing_DOLLAR:\n // '$' IDENTFST IDENTRST* => lexing_IDENT_dlr, _ => lexing_IDENT_sym\n {\n regex: /\\$@IDENTFST@IDENTRST*/,\n action: {\n cases: {\n '@keywords_dlr': { token: 'keyword.dlr' },\n '@default': { token: 'namespace' } // most likely a module qualifier\n }\n }\n },\n // lexing_SHARP:\n // '#' IDENTFST IDENTRST* => lexing_ident_srp, _ => lexing_IDENT_sym\n {\n regex: /\\#@IDENTFST@IDENTRST*/,\n action: {\n cases: {\n '@keywords_srp': { token: 'keyword.srp' },\n '@default': { token: 'identifier' }\n }\n }\n },\n // lexing_PERCENT:\n { regex: /%\\(/, action: { token: 'delimiter.parenthesis' } },\n {\n regex: /^%{(#|\\^|\\$)?/,\n action: {\n token: 'keyword',\n next: '@lexing_EXTCODE',\n nextEmbedded: 'text/javascript'\n }\n },\n { regex: /^%}/, action: { token: 'keyword' } },\n // lexing_QUOTE\n { regex: /'\\(/, action: { token: 'delimiter.parenthesis' } },\n { regex: /'\\[/, action: { token: 'delimiter.bracket' } },\n { regex: /'\\{/, action: { token: 'delimiter.brace' } },\n [/(')(\\\\@ESCHAR|\\\\[xX]@xdigit+|\\\\@digit+)(')/, ['string', 'string.escape', 'string']],\n [/'[^\\\\']'/, 'string'],\n // lexing_DQUOTE\n [/\"/, 'string.quote', '@lexing_DQUOTE'],\n // lexing_BQUOTE\n {\n regex: /`\\(/,\n action: '@brackets' /* { token: 'delimiter.parenthesis' }*/\n },\n // TODO: otherwise, try lexing_IDENT_sym\n { regex: /\\\\/, action: { token: 'punctuation' } },\n // lexing_IDENT_alp:\n // NOTE: (?!regex) is syntax for \"not-followed-by\" regex\n // to resolve ambiguity such as foreach$fwork being incorrectly lexed as [for] [each$fwork]!\n {\n regex: /@irregular_keywords(?!@IDENTRST)/,\n action: { token: 'keyword' }\n },\n {\n regex: /@IDENTFST@IDENTRST*[<!\\[]?/,\n action: {\n cases: {\n // TODO: dynload and staload should be specially parsed\n // dynload whitespace+ \"special_string\"\n // this special string is really:\n // '/' '\\\\' '.' => punctuation\n // ({\\$)([a-zA-Z_][a-zA-Z_0-9]*)(}) => punctuation,keyword,punctuation\n // [^\"] => identifier/literal\n '@keywords': { token: 'keyword' },\n '@keywords_types': { token: 'type' },\n '@default': { token: 'identifier' }\n }\n }\n },\n // lexing_IDENT_sym:\n {\n regex: /\\/\\/\\/\\//,\n action: { token: 'comment', next: '@lexing_COMMENT_rest' }\n },\n { regex: /\\/\\/.*$/, action: { token: 'comment' } },\n {\n regex: /\\/\\*/,\n action: { token: 'comment', next: '@lexing_COMMENT_block_c' }\n },\n // AS-20160627: specifically for effect annotations\n {\n regex: /-<|=</,\n action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }\n },\n {\n regex: /@symbolic+/,\n action: {\n cases: {\n '@operators': 'keyword',\n '@default': 'operator'\n }\n }\n },\n // lexing_ZERO:\n // FIXME: this one is quite messy/unfinished yet\n // TODO: lexing_INT_hex\n // - testing_hexiexp => lexing_FLOAT_hexiexp\n // - testing_fexponent_bin => lexing_FLOAT_hexiexp\n // - testing_intspseq0 => T_INT_hex\n // lexing_INT_hex:\n {\n regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,\n action: { token: 'number.float' }\n },\n { regex: /0[xX]@xdigit+@INTSP*/, action: { token: 'number.hex' } },\n {\n regex: /0[0-7]+(?![0-9])@INTSP*/,\n action: { token: 'number.octal' }\n },\n //{regex: /0/, action: { token: 'number' } }, // INTZERO\n // lexing_INT_dec:\n // - testing_deciexp => lexing_FLOAT_deciexp\n // - testing_fexponent => lexing_FLOAT_deciexp\n // - otherwise => intspseq0 ([0-9]*[lLuU]?)\n {\n regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/,\n action: { token: 'number.float' }\n },\n {\n regex: /@digit@digitseq0@INTSP*/,\n action: { token: 'number.decimal' }\n },\n // DIGIT, if followed by digitseq0, is lexing_INT_dec\n { regex: /@digit+@INTSP*/, action: { token: 'number' } }\n ],\n lexing_COMMENT_block_ml: [\n [/[^\\(\\*]+/, 'comment'],\n [/\\(\\*/, 'comment', '@push'],\n [/\\(\\*/, 'comment.invalid'],\n [/\\*\\)/, 'comment', '@pop'],\n [/\\*/, 'comment']\n ],\n lexing_COMMENT_block_c: [\n [/[^\\/*]+/, 'comment'],\n // [/\\/\\*/, 'comment', '@push' ], // nested C-style block comments not allowed\n // [/\\/\\*/, 'comment.invalid' ],\t// NOTE: this breaks block comments in the shape of /* //*/\n [/\\*\\//, 'comment', '@pop'],\n [/[\\/*]/, 'comment']\n ],\n lexing_COMMENT_rest: [\n [/$/, 'comment', '@pop'],\n [/.*/, 'comment']\n ],\n // NOTE: added by AS, specifically for highlighting\n lexing_EFFECT_commaseq0: [\n {\n regex: /@IDENTFST@IDENTRST+|@digit+/,\n action: {\n cases: {\n '@keywords_effects': { token: 'type.effect' },\n '@default': { token: 'identifier' }\n }\n }\n },\n { regex: /,/, action: { token: 'punctuation' } },\n { regex: />/, action: { token: '@rematch', next: '@pop' } }\n ],\n lexing_EXTCODE: [\n {\n regex: /^%}/,\n action: {\n token: '@rematch',\n next: '@pop',\n nextEmbedded: '@pop'\n }\n },\n { regex: /[^%]+/, action: '' }\n ],\n lexing_DQUOTE: [\n { regex: /\"/, action: { token: 'string.quote', next: '@pop' } },\n // AS-20160628: additional hi-lighting for variables in staload/dynload strings\n {\n regex: /(\\{\\$)(@IDENTFST@IDENTRST*)(\\})/,\n action: [\n { token: 'string.escape' },\n { token: 'identifier' },\n { token: 'string.escape' }\n ]\n },\n { regex: /\\\\$/, action: { token: 'string.escape' } },\n {\n regex: /\\\\(@ESCHAR|[xX]@xdigit+|@digit+)/,\n action: { token: 'string.escape' }\n },\n { regex: /[^\\\\\"]+/, action: { token: 'string' } }\n ]\n }\n};\n"],"sourceRoot":""}