123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547 |
- /*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/
- // src/basic-languages/postiats/postiats.ts
- var conf = {
- comments: {
- lineComment: "//",
- blockComment: ["(*", "*)"]
- },
- brackets: [
- ["{", "}"],
- ["[", "]"],
- ["(", ")"],
- ["<", ">"]
- ],
- autoClosingPairs: [
- { open: '"', close: '"', notIn: ["string", "comment"] },
- { open: "{", close: "}", notIn: ["string", "comment"] },
- { open: "[", close: "]", notIn: ["string", "comment"] },
- { open: "(", close: ")", notIn: ["string", "comment"] }
- ]
- };
- var language = {
- tokenPostfix: ".pats",
- defaultToken: "invalid",
- keywords: [
- "abstype",
- "abst0ype",
- "absprop",
- "absview",
- "absvtype",
- "absviewtype",
- "absvt0ype",
- "absviewt0ype",
- "as",
- "and",
- "assume",
- "begin",
- "classdec",
- "datasort",
- "datatype",
- "dataprop",
- "dataview",
- "datavtype",
- "dataviewtype",
- "do",
- "end",
- "extern",
- "extype",
- "extvar",
- "exception",
- "fn",
- "fnx",
- "fun",
- "prfn",
- "prfun",
- "praxi",
- "castfn",
- "if",
- "then",
- "else",
- "ifcase",
- "in",
- "infix",
- "infixl",
- "infixr",
- "prefix",
- "postfix",
- "implmnt",
- "implement",
- "primplmnt",
- "primplement",
- "import",
- "let",
- "local",
- "macdef",
- "macrodef",
- "nonfix",
- "symelim",
- "symintr",
- "overload",
- "of",
- "op",
- "rec",
- "sif",
- "scase",
- "sortdef",
- "sta",
- "stacst",
- "stadef",
- "static",
- "staload",
- "dynload",
- "try",
- "tkindef",
- "typedef",
- "propdef",
- "viewdef",
- "vtypedef",
- "viewtypedef",
- "prval",
- "var",
- "prvar",
- "when",
- "where",
- "with",
- "withtype",
- "withprop",
- "withview",
- "withvtype",
- "withviewtype"
- ],
- keywords_dlr: [
- "$delay",
- "$ldelay",
- "$arrpsz",
- "$arrptrsize",
- "$d2ctype",
- "$effmask",
- "$effmask_ntm",
- "$effmask_exn",
- "$effmask_ref",
- "$effmask_wrt",
- "$effmask_all",
- "$extern",
- "$extkind",
- "$extype",
- "$extype_struct",
- "$extval",
- "$extfcall",
- "$extmcall",
- "$literal",
- "$myfilename",
- "$mylocation",
- "$myfunction",
- "$lst",
- "$lst_t",
- "$lst_vt",
- "$list",
- "$list_t",
- "$list_vt",
- "$rec",
- "$rec_t",
- "$rec_vt",
- "$record",
- "$record_t",
- "$record_vt",
- "$tup",
- "$tup_t",
- "$tup_vt",
- "$tuple",
- "$tuple_t",
- "$tuple_vt",
- "$break",
- "$continue",
- "$raise",
- "$showtype",
- "$vcopyenv_v",
- "$vcopyenv_vt",
- "$tempenver",
- "$solver_assert",
- "$solver_verify"
- ],
- keywords_srp: [
- "#if",
- "#ifdef",
- "#ifndef",
- "#then",
- "#elif",
- "#elifdef",
- "#elifndef",
- "#else",
- "#endif",
- "#error",
- "#prerr",
- "#print",
- "#assert",
- "#undef",
- "#define",
- "#include",
- "#require",
- "#pragma",
- "#codegen2",
- "#codegen3"
- ],
- irregular_keyword_list: [
- "val+",
- "val-",
- "val",
- "case+",
- "case-",
- "case",
- "addr@",
- "addr",
- "fold@",
- "free@",
- "fix@",
- "fix",
- "lam@",
- "lam",
- "llam@",
- "llam",
- "viewt@ype+",
- "viewt@ype-",
- "viewt@ype",
- "viewtype+",
- "viewtype-",
- "viewtype",
- "view+",
- "view-",
- "view@",
- "view",
- "type+",
- "type-",
- "type",
- "vtype+",
- "vtype-",
- "vtype",
- "vt@ype+",
- "vt@ype-",
- "vt@ype",
- "viewt@ype+",
- "viewt@ype-",
- "viewt@ype",
- "viewtype+",
- "viewtype-",
- "viewtype",
- "prop+",
- "prop-",
- "prop",
- "type+",
- "type-",
- "type",
- "t@ype",
- "t@ype+",
- "t@ype-",
- "abst@ype",
- "abstype",
- "absviewt@ype",
- "absvt@ype",
- "for*",
- "for",
- "while*",
- "while"
- ],
- keywords_types: [
- "bool",
- "double",
- "byte",
- "int",
- "short",
- "char",
- "void",
- "unit",
- "long",
- "float",
- "string",
- "strptr"
- ],
- keywords_effects: [
- "0",
- "fun",
- "clo",
- "prf",
- "funclo",
- "cloptr",
- "cloref",
- "ref",
- "ntm",
- "1"
- ],
- operators: [
- "@",
- "!",
- "|",
- "`",
- ":",
- "$",
- ".",
- "=",
- "#",
- "~",
- "..",
- "...",
- "=>",
- "=<>",
- "=/=>",
- "=>>",
- "=/=>>",
- "<",
- ">",
- "><",
- ".<",
- ">.",
- ".<>.",
- "->",
- "-<>"
- ],
- brackets: [
- { open: ",(", close: ")", token: "delimiter.parenthesis" },
- { open: "`(", close: ")", token: "delimiter.parenthesis" },
- { open: "%(", close: ")", token: "delimiter.parenthesis" },
- { open: "'(", close: ")", token: "delimiter.parenthesis" },
- { open: "'{", close: "}", token: "delimiter.parenthesis" },
- { open: "@(", close: ")", token: "delimiter.parenthesis" },
- { open: "@{", close: "}", token: "delimiter.brace" },
- { open: "@[", close: "]", token: "delimiter.square" },
- { open: "#[", close: "]", token: "delimiter.square" },
- { open: "{", close: "}", token: "delimiter.curly" },
- { open: "[", close: "]", token: "delimiter.square" },
- { open: "(", close: ")", token: "delimiter.parenthesis" },
- { open: "<", close: ">", token: "delimiter.angle" }
- ],
- symbols: /[=><!~?:&|+\-*\/\^%]+/,
- IDENTFST: /[a-zA-Z_]/,
- IDENTRST: /[a-zA-Z0-9_'$]/,
- symbolic: /[%&+-./:=@~`^|*!$#?<>]/,
- digit: /[0-9]/,
- digitseq0: /@digit*/,
- xdigit: /[0-9A-Za-z]/,
- xdigitseq0: /@xdigit*/,
- INTSP: /[lLuU]/,
- FLOATSP: /[fFlL]/,
- fexponent: /[eE][+-]?[0-9]+/,
- fexponent_bin: /[pP][+-]?[0-9]+/,
- deciexp: /\.[0-9]*@fexponent?/,
- hexiexp: /\.[0-9a-zA-Z]*@fexponent_bin?/,
- 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\*?/,
- ESCHAR: /[ntvbrfa\\\?'"\(\[\{]/,
- start: "root",
- tokenizer: {
- root: [
- { regex: /[ \t\r\n]+/, action: { token: "" } },
- { regex: /\(\*\)/, action: { token: "invalid" } },
- {
- regex: /\(\*/,
- action: { token: "comment", next: "lexing_COMMENT_block_ml" }
- },
- {
- regex: /\(/,
- action: "@brackets"
- },
- {
- regex: /\)/,
- action: "@brackets"
- },
- {
- regex: /\[/,
- action: "@brackets"
- },
- {
- regex: /\]/,
- action: "@brackets"
- },
- {
- regex: /\{/,
- action: "@brackets"
- },
- {
- regex: /\}/,
- action: "@brackets"
- },
- {
- regex: /,\(/,
- action: "@brackets"
- },
- { regex: /,/, action: { token: "delimiter.comma" } },
- { regex: /;/, action: { token: "delimiter.semicolon" } },
- {
- regex: /@\(/,
- action: "@brackets"
- },
- {
- regex: /@\[/,
- action: "@brackets"
- },
- {
- regex: /@\{/,
- action: "@brackets"
- },
- {
- regex: /:</,
- action: { token: "keyword", next: "@lexing_EFFECT_commaseq0" }
- },
- { regex: /\.@symbolic+/, action: { token: "identifier.sym" } },
- {
- regex: /\.@digit*@fexponent@FLOATSP*/,
- action: { token: "number.float" }
- },
- { regex: /\.@digit+/, action: { token: "number.float" } },
- {
- regex: /\$@IDENTFST@IDENTRST*/,
- action: {
- cases: {
- "@keywords_dlr": { token: "keyword.dlr" },
- "@default": { token: "namespace" }
- }
- }
- },
- {
- regex: /\#@IDENTFST@IDENTRST*/,
- action: {
- cases: {
- "@keywords_srp": { token: "keyword.srp" },
- "@default": { token: "identifier" }
- }
- }
- },
- { regex: /%\(/, action: { token: "delimiter.parenthesis" } },
- {
- regex: /^%{(#|\^|\$)?/,
- action: {
- token: "keyword",
- next: "@lexing_EXTCODE",
- nextEmbedded: "text/javascript"
- }
- },
- { regex: /^%}/, action: { token: "keyword" } },
- { regex: /'\(/, action: { token: "delimiter.parenthesis" } },
- { regex: /'\[/, action: { token: "delimiter.bracket" } },
- { regex: /'\{/, action: { token: "delimiter.brace" } },
- [/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/, ["string", "string.escape", "string"]],
- [/'[^\\']'/, "string"],
- [/"/, "string.quote", "@lexing_DQUOTE"],
- {
- regex: /`\(/,
- action: "@brackets"
- },
- { regex: /\\/, action: { token: "punctuation" } },
- {
- regex: /@irregular_keywords(?!@IDENTRST)/,
- action: { token: "keyword" }
- },
- {
- regex: /@IDENTFST@IDENTRST*[<!\[]?/,
- action: {
- cases: {
- "@keywords": { token: "keyword" },
- "@keywords_types": { token: "type" },
- "@default": { token: "identifier" }
- }
- }
- },
- {
- regex: /\/\/\/\//,
- action: { token: "comment", next: "@lexing_COMMENT_rest" }
- },
- { regex: /\/\/.*$/, action: { token: "comment" } },
- {
- regex: /\/\*/,
- action: { token: "comment", next: "@lexing_COMMENT_block_c" }
- },
- {
- regex: /-<|=</,
- action: { token: "keyword", next: "@lexing_EFFECT_commaseq0" }
- },
- {
- regex: /@symbolic+/,
- action: {
- cases: {
- "@operators": "keyword",
- "@default": "operator"
- }
- }
- },
- {
- regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,
- action: { token: "number.float" }
- },
- { regex: /0[xX]@xdigit+@INTSP*/, action: { token: "number.hex" } },
- {
- regex: /0[0-7]+(?![0-9])@INTSP*/,
- action: { token: "number.octal" }
- },
- {
- regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/,
- action: { token: "number.float" }
- },
- {
- regex: /@digit@digitseq0@INTSP*/,
- action: { token: "number.decimal" }
- },
- { regex: /@digit+@INTSP*/, action: { token: "number" } }
- ],
- lexing_COMMENT_block_ml: [
- [/[^\(\*]+/, "comment"],
- [/\(\*/, "comment", "@push"],
- [/\(\*/, "comment.invalid"],
- [/\*\)/, "comment", "@pop"],
- [/\*/, "comment"]
- ],
- lexing_COMMENT_block_c: [
- [/[^\/*]+/, "comment"],
- [/\*\//, "comment", "@pop"],
- [/[\/*]/, "comment"]
- ],
- lexing_COMMENT_rest: [
- [/$/, "comment", "@pop"],
- [/.*/, "comment"]
- ],
- lexing_EFFECT_commaseq0: [
- {
- regex: /@IDENTFST@IDENTRST+|@digit+/,
- action: {
- cases: {
- "@keywords_effects": { token: "type.effect" },
- "@default": { token: "identifier" }
- }
- }
- },
- { regex: /,/, action: { token: "punctuation" } },
- { regex: />/, action: { token: "@rematch", next: "@pop" } }
- ],
- lexing_EXTCODE: [
- {
- regex: /^%}/,
- action: {
- token: "@rematch",
- next: "@pop",
- nextEmbedded: "@pop"
- }
- },
- { regex: /[^%]+/, action: "" }
- ],
- lexing_DQUOTE: [
- { regex: /"/, action: { token: "string.quote", next: "@pop" } },
- {
- regex: /(\{\$)(@IDENTFST@IDENTRST*)(\})/,
- action: [{ token: "string.escape" }, { token: "identifier" }, { token: "string.escape" }]
- },
- { regex: /\\$/, action: { token: "string.escape" } },
- {
- regex: /\\(@ESCHAR|[xX]@xdigit+|@digit+)/,
- action: { token: "string.escape" }
- },
- { regex: /[^\\"]+/, action: { token: "string" } }
- ]
- }
- };
- export {
- conf,
- language
- };
|