You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
20 KiB
1 line
20 KiB
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[196],{YdqL:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conf", function() { return conf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "language", function() { return language; });\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Artyom Shalkhakov. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *\r\n * Based on the ATS/Postiats lexer by Hongwei Xi.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nvar conf = {\r\n comments: {\r\n lineComment: \'//\',\r\n blockComment: [\'(*\', \'*)\'],\r\n },\r\n brackets: [[\'{\', \'}\'], [\'[\', \']\'], [\'(\', \')\'], [\'<\', \'>\']],\r\n autoClosingPairs: [\r\n { open: \'"\', close: \'"\', notIn: [\'string\', \'comment\'] },\r\n { open: \'{\', close: \'}\', notIn: [\'string\', \'comment\'] },\r\n { open: \'[\', close: \']\', notIn: [\'string\', \'comment\'] },\r\n { open: \'(\', close: \')\', notIn: [\'string\', \'comment\'] },\r\n ]\r\n};\r\nvar language = {\r\n tokenPostfix: \'.pats\',\r\n // TODO: staload and dynload are followed by a special kind of string literals\r\n // with {$IDENTIFER} variables, and it also may make sense to highlight\r\n // the punctuation (. and / and \\) differently.\r\n // Set defaultToken to invalid to see what you do not tokenize yet\r\n defaultToken: \'invalid\',\r\n // keyword reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing_token.dats\r\n keywords: [\r\n //\r\n "abstype",\r\n "abst0ype",\r\n "absprop",\r\n "absview",\r\n "absvtype",\r\n "absviewtype",\r\n "absvt0ype",\r\n "absviewt0ype",\r\n //\r\n "as",\r\n //\r\n "and",\r\n //\r\n "assume",\r\n //\r\n "begin",\r\n //\r\n /*\r\n "case", // CASE\r\n */\r\n //\r\n "classdec",\r\n //\r\n "datasort",\r\n //\r\n "datatype",\r\n "dataprop",\r\n "dataview",\r\n "datavtype",\r\n "dataviewtype",\r\n //\r\n "do",\r\n //\r\n "end",\r\n //\r\n "extern",\r\n "extype",\r\n "extvar",\r\n //\r\n "exception",\r\n //\r\n "fn",\r\n "fnx",\r\n "fun",\r\n //\r\n "prfn",\r\n "prfun",\r\n //\r\n "praxi",\r\n "castfn",\r\n //\r\n "if",\r\n "then",\r\n "else",\r\n //\r\n "ifcase",\r\n //\r\n "in",\r\n //\r\n "infix",\r\n "infixl",\r\n "infixr",\r\n "prefix",\r\n "postfix",\r\n //\r\n "implmnt",\r\n "implement",\r\n //\r\n "primplmnt",\r\n "primplement",\r\n //\r\n "import",\r\n //\r\n /*\r\n "lam", // LAM\r\n "llam", // LLAM\r\n "fix", // FIX\r\n */\r\n //\r\n "let",\r\n //\r\n "local",\r\n //\r\n "macdef",\r\n "macrodef",\r\n //\r\n "nonfix",\r\n //\r\n "symelim",\r\n "symintr",\r\n "overload",\r\n //\r\n "of",\r\n "op",\r\n //\r\n "rec",\r\n //\r\n "sif",\r\n "scase",\r\n //\r\n "sortdef",\r\n /*\r\n // HX: [sta] is now deprecated\r\n */\r\n "sta",\r\n "stacst",\r\n "stadef",\r\n "static",\r\n /*\r\n "stavar", // T_STAVAR\r\n */\r\n //\r\n "staload",\r\n "dynload",\r\n //\r\n "try",\r\n //\r\n "tkindef",\r\n //\r\n /*\r\n "type", // TYPE\r\n */\r\n "typedef",\r\n "propdef",\r\n "viewdef",\r\n "vtypedef",\r\n "viewtypedef",\r\n //\r\n /*\r\n "val", // VAL\r\n */\r\n "prval",\r\n //\r\n "var",\r\n "prvar",\r\n //\r\n "when",\r\n "where",\r\n //\r\n /*\r\n "for", // T_FOR\r\n "while", // T_WHILE\r\n */\r\n //\r\n "with",\r\n //\r\n "withtype",\r\n "withprop",\r\n "withview",\r\n "withvtype",\r\n "withviewtype",\r\n ],\r\n keywords_dlr: [\r\n "$delay",\r\n "$ldelay",\r\n //\r\n "$arrpsz",\r\n "$arrptrsize",\r\n //\r\n "$d2ctype",\r\n //\r\n "$effmask",\r\n "$effmask_ntm",\r\n "$effmask_exn",\r\n "$effmask_ref",\r\n "$effmask_wrt",\r\n "$effmask_all",\r\n //\r\n "$extern",\r\n "$extkind",\r\n "$extype",\r\n "$extype_struct",\r\n //\r\n "$extval",\r\n "$extfcall",\r\n "$extmcall",\r\n //\r\n "$literal",\r\n //\r\n "$myfilename",\r\n "$mylocation",\r\n "$myfunction",\r\n //\r\n "$lst",\r\n "$lst_t",\r\n "$lst_vt",\r\n "$list",\r\n "$list_t",\r\n "$list_vt",\r\n //\r\n "$rec",\r\n "$rec_t",\r\n "$rec_vt",\r\n "$record",\r\n "$record_t",\r\n "$record_vt",\r\n //\r\n "$tup",\r\n "$tup_t",\r\n "$tup_vt",\r\n "$tuple",\r\n "$tuple_t",\r\n "$tuple_vt",\r\n //\r\n "$break",\r\n "$continue",\r\n //\r\n "$raise",\r\n //\r\n "$showtype",\r\n //\r\n "$vcopyenv_v",\r\n "$vcopyenv_vt",\r\n //\r\n "$tempenver",\r\n //\r\n "$solver_assert",\r\n "$solver_verify",\r\n ],\r\n keywords_srp: [\r\n //\r\n "#if",\r\n "#ifdef",\r\n "#ifndef",\r\n //\r\n "#then",\r\n //\r\n "#elif",\r\n "#elifdef",\r\n "#elifndef",\r\n //\r\n "#else",\r\n "#endif",\r\n //\r\n "#error",\r\n //\r\n "#prerr",\r\n "#print",\r\n //\r\n "#assert",\r\n //\r\n "#undef",\r\n "#define",\r\n //\r\n "#include",\r\n "#require",\r\n //\r\n "#pragma",\r\n "#codegen2",\r\n "#codegen3",\r\n ],\r\n irregular_keyword_list: [\r\n "val+",\r\n "val-",\r\n "val",\r\n "case+",\r\n "case-",\r\n "case",\r\n "addr@",\r\n "addr",\r\n "fold@",\r\n "free@",\r\n "fix@",\r\n "fix",\r\n "lam@",\r\n "lam",\r\n "llam@",\r\n "llam",\r\n "viewt@ype+",\r\n "viewt@ype-",\r\n "viewt@ype",\r\n "viewtype+",\r\n "viewtype-",\r\n "viewtype",\r\n "view+",\r\n "view-",\r\n "view@",\r\n "view",\r\n "type+",\r\n "type-",\r\n "type",\r\n "vtype+",\r\n "vtype-",\r\n "vtype",\r\n "vt@ype+",\r\n "vt@ype-",\r\n "vt@ype",\r\n "viewt@ype+",\r\n "viewt@ype-",\r\n "viewt@ype",\r\n "viewtype+",\r\n "viewtype-",\r\n "viewtype",\r\n "prop+",\r\n "prop-",\r\n "prop",\r\n "type+",\r\n "type-",\r\n "type",\r\n "t@ype",\r\n "t@ype+",\r\n "t@ype-",\r\n "abst@ype",\r\n "abstype",\r\n "absviewt@ype",\r\n "absvt@ype",\r\n "for*",\r\n "for",\r\n "while*",\r\n "while"\r\n ],\r\n keywords_types: [\r\n \'bool\',\r\n \'double\',\r\n \'byte\',\r\n \'int\',\r\n \'short\',\r\n \'char\',\r\n \'void\',\r\n \'unit\',\r\n \'long\',\r\n \'float\',\r\n \'string\',\r\n \'strptr\'\r\n ],\r\n // TODO: reference for this?\r\n keywords_effects: [\r\n "0",\r\n "fun",\r\n "clo",\r\n "prf",\r\n "funclo",\r\n "cloptr",\r\n "cloref",\r\n "ref",\r\n "ntm",\r\n "1" // all effects\r\n ],\r\n operators: [\r\n "@",\r\n "!",\r\n "|",\r\n "`",\r\n ":",\r\n "$",\r\n ".",\r\n "=",\r\n "#",\r\n "~",\r\n //\r\n "..",\r\n "...",\r\n //\r\n "=>",\r\n // "=<", // T_EQLT\r\n "=<>",\r\n "=/=>",\r\n "=>>",\r\n "=/=>>",\r\n //\r\n "<",\r\n ">",\r\n //\r\n "><",\r\n //\r\n ".<",\r\n ">.",\r\n //\r\n ".<>.",\r\n //\r\n "->",\r\n //"-<", // T_MINUSLT\r\n "-<>",\r\n ],\r\n brackets: [\r\n { open: \',(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'`(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'%(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'\\\'(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'\\\'{\', close: \'}\', token: \'delimiter.parenthesis\' },\r\n { open: \'@(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'@{\', close: \'}\', token: \'delimiter.brace\' },\r\n { open: \'@[\', close: \']\', token: \'delimiter.square\' },\r\n { open: \'#[\', close: \']\', token: \'delimiter.square\' },\r\n { open: \'{\', close: \'}\', token: \'delimiter.curly\' },\r\n { open: \'[\', close: \']\', token: \'delimiter.square\' },\r\n { open: \'(\', close: \')\', token: \'delimiter.parenthesis\' },\r\n { open: \'<\', close: \'>\', token: \'delimiter.angle\' }\r\n ],\r\n // we include these common regular expressions\r\n symbols: /[=><!~?:&|+\\-*\\/\\^%]+/,\r\n IDENTFST: /[a-zA-Z_]/,\r\n IDENTRST: /[a-zA-Z0-9_\'$]/,\r\n symbolic: /[%&+-./:=@~`^|*!$#?<>]/,\r\n digit: /[0-9]/,\r\n digitseq0: /@digit*/,\r\n xdigit: /[0-9A-Za-z]/,\r\n xdigitseq0: /@xdigit*/,\r\n INTSP: /[lLuU]/,\r\n FLOATSP: /[fFlL]/,\r\n fexponent: /[eE][+-]?[0-9]+/,\r\n fexponent_bin: /[pP][+-]?[0-9]+/,\r\n deciexp: /\\.[0-9]*@fexponent?/,\r\n hexiexp: /\\.[0-9a-zA-Z]*@fexponent_bin?/,\r\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\\*?/,\r\n ESCHAR: /[ntvbrfa\\\\\\?\'"\\(\\[\\{]/,\r\n start: \'root\',\r\n // The main tokenizer for ATS/Postiats\r\n // reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing.dats\r\n tokenizer: {\r\n root: [\r\n // lexing_blankseq0\r\n { regex: /[ \\t\\r\\n]+/, action: { token: \'\' } },\r\n // NOTE: (*) is an invalid ML-like comment!\r\n { regex: /\\(\\*\\)/, action: { token: \'invalid\' } },\r\n { regex: /\\(\\*/, action: { token: \'comment\', next: \'lexing_COMMENT_block_ml\' } },\r\n { regex: /\\(/, action: \'@brackets\' /*{ token: \'delimiter.parenthesis\' }*/ },\r\n { regex: /\\)/, action: \'@brackets\' /*{ token: \'delimiter.parenthesis\' }*/ },\r\n { regex: /\\[/, action: \'@brackets\' /*{ token: \'delimiter.bracket\' }*/ },\r\n { regex: /\\]/, action: \'@brackets\' /*{ token: \'delimiter.bracket\' }*/ },\r\n { regex: /\\{/, action: \'@brackets\' /*{ token: \'delimiter.brace\' }*/ },\r\n { regex: /\\}/, action: \'@brackets\' /*{ token: \'delimiter.brace\' }*/ },\r\n // lexing_COMMA\r\n { regex: /,\\(/, action: \'@brackets\' /*{ token: \'delimiter.parenthesis\' }*/ },\r\n { regex: /,/, action: { token: \'delimiter.comma\' } },\r\n { regex: /;/, action: { token: \'delimiter.semicolon\' } },\r\n // lexing_AT\r\n { regex: /@\\(/, action: \'@brackets\' /* { token: \'delimiter.parenthesis\' }*/ },\r\n { regex: /@\\[/, action: \'@brackets\' /* { token: \'delimiter.bracket\' }*/ },\r\n { regex: /@\\{/, action: \'@brackets\' /*{ token: \'delimiter.brace\' }*/ },\r\n // lexing_COLON\r\n { regex: /:</, action: { token: \'keyword\', next: \'@lexing_EFFECT_commaseq0\' } },\r\n /*\r\n lexing_DOT:\r\n\r\n . // SYMBOLIC => lexing_IDENT_sym\r\n . FLOATDOT => lexing_FLOAT_deciexp\r\n . DIGIT => T_DOTINT\r\n */\r\n { regex: /\\.@symbolic+/, action: { token: \'identifier.sym\' } },\r\n // FLOATDOT case\r\n { regex: /\\.@digit*@fexponent@FLOATSP*/, action: { token: \'number.float\' } },\r\n { regex: /\\.@digit+/, action: { token: \'number.float\' } },\r\n // lexing_DOLLAR:\r\n // \'$\' IDENTFST IDENTRST* => lexing_IDENT_dlr, _ => lexing_IDENT_sym\r\n {\r\n regex: /\\$@IDENTFST@IDENTRST*/,\r\n action: {\r\n cases: {\r\n \'@keywords_dlr\': { token: \'keyword.dlr\' },\r\n \'@default\': { token: \'namespace\' },\r\n }\r\n }\r\n },\r\n // lexing_SHARP:\r\n // \'#\' IDENTFST IDENTRST* => lexing_ident_srp, _ => lexing_IDENT_sym\r\n {\r\n regex: /\\#@IDENTFST@IDENTRST*/,\r\n action: {\r\n cases: {\r\n \'@keywords_srp\': { token: \'keyword.srp\' },\r\n \'@default\': { token: \'identifier\' },\r\n }\r\n }\r\n },\r\n // lexing_PERCENT:\r\n { regex: /%\\(/, action: { token: \'delimiter.parenthesis\' } },\r\n { regex: /^%{(#|\\^|\\$)?/, action: { token: \'keyword\', next: \'@lexing_EXTCODE\', nextEmbedded: \'text/javascript\' } },\r\n { regex: /^%}/, action: { token: \'keyword\' } },\r\n // lexing_QUOTE\r\n { regex: /\'\\(/, action: { token: \'delimiter.parenthesis\' } },\r\n { regex: /\'\\[/, action: { token: \'delimiter.bracket\' } },\r\n { regex: /\'\\{/, action: { token: \'delimiter.brace\' } },\r\n [/(\')(\\\\@ESCHAR|\\\\[xX]@xdigit+|\\\\@digit+)(\')/, [\'string\', \'string.escape\', \'string\']],\r\n [/\'[^\\\\\']\'/, \'string\'],\r\n // lexing_DQUOTE\r\n [/"/, \'string.quote\', \'@lexing_DQUOTE\'],\r\n // lexing_BQUOTE\r\n { regex: /`\\(/, action: \'@brackets\' /* { token: \'delimiter.parenthesis\' }*/ },\r\n // TODO: otherwise, try lexing_IDENT_sym\r\n { regex: /\\\\/, action: { token: \'punctuation\' } },\r\n // lexing_IDENT_alp:\r\n // NOTE: (?!regex) is syntax for "not-followed-by" regex\r\n // to resolve ambiguity such as foreach$fwork being incorrectly lexed as [for] [each$fwork]!\r\n { regex: /@irregular_keywords(?!@IDENTRST)/, action: { token: \'keyword\' } },\r\n {\r\n regex: /@IDENTFST@IDENTRST*[<!\\[]?/,\r\n action: {\r\n cases: {\r\n // TODO: dynload and staload should be specially parsed\r\n // dynload whitespace+ "special_string"\r\n // this special string is really:\r\n // \'/\' \'\\\\\' \'.\' => punctuation\r\n // ({\\$)([a-zA-Z_][a-zA-Z_0-9]*)(}) => punctuation,keyword,punctuation\r\n // [^"] => identifier/literal\r\n \'@keywords\': { token: \'keyword\' },\r\n \'@keywords_types\': { token: \'type\' },\r\n \'@default\': { token: \'identifier\' }\r\n }\r\n }\r\n },\r\n // lexing_IDENT_sym:\r\n { regex: /\\/\\/\\/\\//, action: { token: \'comment\', next: \'@lexing_COMMENT_rest\' } },\r\n { regex: /\\/\\/.*$/, action: { token: \'comment\' } },\r\n { regex: /\\/\\*/, action: { token: \'comment\', next: \'@lexing_COMMENT_block_c\' } },\r\n // AS-20160627: specifically for effect annotations\r\n { regex: /-<|=</, action: { token: \'keyword\', next: \'@lexing_EFFECT_commaseq0\' } },\r\n {\r\n regex: /@symbolic+/,\r\n action: {\r\n cases: {\r\n \'@operators\': \'keyword\',\r\n \'@default\': \'operator\'\r\n }\r\n }\r\n },\r\n // lexing_ZERO:\r\n // FIXME: this one is quite messy/unfinished yet\r\n // TODO: lexing_INT_hex\r\n // - testing_hexiexp => lexing_FLOAT_hexiexp\r\n // - testing_fexponent_bin => lexing_FLOAT_hexiexp\r\n // - testing_intspseq0 => T_INT_hex\r\n // lexing_INT_hex:\r\n { regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/, action: { token: \'number.float\' } },\r\n { regex: /0[xX]@xdigit+@INTSP*/, action: { token: \'number.hex\' } },\r\n { regex: /0[0-7]+(?![0-9])@INTSP*/, action: { token: \'number.octal\' } },\r\n //{regex: /0/, action: { token: \'number\' } }, // INTZERO\r\n // lexing_INT_dec:\r\n // - testing_deciexp => lexing_FLOAT_deciexp\r\n // - testing_fexponent => lexing_FLOAT_deciexp\r\n // - otherwise => intspseq0 ([0-9]*[lLuU]?)\r\n { regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/, action: { token: \'number.float\' } },\r\n { regex: /@digit@digitseq0@INTSP*/, action: { token: \'number.decimal\' } },\r\n // DIGIT, if followed by digitseq0, is lexing_INT_dec\r\n { regex: /@digit+@INTSP*/, action: { token: \'number\' } },\r\n ],\r\n lexing_COMMENT_block_ml: [\r\n [/[^\\(\\*]+/, \'comment\'],\r\n [/\\(\\*/, \'comment\', \'@push\'],\r\n [/\\(\\*/, \'comment.invalid\'],\r\n [/\\*\\)/, \'comment\', \'@pop\'],\r\n [/\\*/, \'comment\']\r\n ],\r\n lexing_COMMENT_block_c: [\r\n [/[^\\/*]+/, \'comment\'],\r\n // [/\\/\\*/, \'comment\', \'@push\' ], // nested C-style block comments not allowed\r\n // [/\\/\\*/, \'comment.invalid\' ],\t// NOTE: this breaks block comments in the shape of /* //*/\r\n [/\\*\\//, \'comment\', \'@pop\'],\r\n [/[\\/*]/, \'comment\']\r\n ],\r\n lexing_COMMENT_rest: [\r\n [/$/, \'comment\', \'@pop\'],\r\n [/.*/, \'comment\']\r\n ],\r\n // NOTE: added by AS, specifically for highlighting\r\n lexing_EFFECT_commaseq0: [\r\n {\r\n regex: /@IDENTFST@IDENTRST+|@digit+/,\r\n action: {\r\n cases: {\r\n \'@keywords_effects\': { token: \'type.effect\' },\r\n \'@default\': { token: \'identifier\' }\r\n }\r\n }\r\n },\r\n { regex: /,/, action: { token: \'punctuation\' } },\r\n { regex: />/, action: { token: \'@rematch\', next: \'@pop\' } },\r\n ],\r\n lexing_EXTCODE: [\r\n { regex: /^%}/, action: { token: \'@rematch\', next: \'@pop\', nextEmbedded: \'@pop\' } },\r\n { regex: /[^%]+/, action: \'\' },\r\n ],\r\n lexing_DQUOTE: [\r\n { regex: /"/, action: { token: \'string.quote\', next: \'@pop\' } },\r\n // AS-20160628: additional hi-lighting for variables in staload/dynload strings\r\n { regex: /(\\{\\$)(@IDENTFST@IDENTRST*)(\\})/, action: [{ token: \'string.escape\' }, { token: \'identifier\' }, { token: \'string.escape\' }] },\r\n { regex: /\\\\$/, action: { token: \'string.escape\' } },\r\n { regex: /\\\\(@ESCHAR|[xX]@xdigit+|@digit+)/, action: { token: \'string.escape\' } },\r\n { regex: /[^\\\\"]+/, action: { token: \'string\' } }\r\n ],\r\n },\r\n};\r\n\n\n//# sourceURL=webpack:///./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.js?')}}]); |