{"name":"Pkl","scopeName":"source.pkl","patterns":[{"match":"(?x:\n \\b\n (module)\n \\s+\n (\n [\\p{L}_$][\\p{L}0-9_$]*(?:\\.[\\p{L}_$][\\p{L}0-9_$]*)*\n )\n)","captures":{"1":{"name":"variable.language.pkl"},"2":{"name":"variable.other.module.pkl"}}},{"match":"(?x:\n (typealias)\n \\s+\n ([\\p{L}_$][\\p{L}0-9_$]*)\n \\s*(=)\\s*\n ((?x:\n (?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n)\n \\s*\n (\\|\\s*(?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n))*\n))\n)","captures":{"1":{"name":"keyword.class.pkl"},"2":{"name":"entity.name.type.pkl"},"3":{"name":"punctuation.pkl"},"4":{"name":"entity.name.type.pkl"}}},{"name":"entity.name.type.pkl","match":"\\b(class)\\s+[\\p{L}_$][\\p{L}0-9_$]*","captures":{"1":{"name":"keyword.class.pkl"}}},{"match":"(?x:\n \\b(for)\n \\s*\\(\n ([\\p{L}_$][\\p{L}0-9_$]*)(?:\\s*,\\s*([\\p{L}_$][\\p{L}0-9_$]*))* # bindings\n \\s+\n (in)\n)","captures":{"1":{"name":"keyword.control.pkl"},"2":{"name":"variable.other.property.pkl"},"3":{"name":"variable.other.property.pkl"},"4":{"name":"storage.modifier.pkl"}}},{"match":"\\b(new)\\s+((?x:\n (?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n)\n \\s*\n (\\|\\s*(?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n))*\n))","captures":{"1":{"name":"keyword.control.pkl"},"2":{"name":"entity.name.type.pkl"}}},{"match":"\\b(function)\\s+([\\p{L}_$][\\p{L}0-9_$]*)","captures":{"1":{"name":"keyword.pkl"},"2":{"name":"variable.other.property.pkl"}}},{"match":"\\b(as)\\s+((?x:\n (?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n)\n \\s*\n (\\|\\s*(?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n))*\n))","captures":{"1":{"name":"keyword.pkl"},"2":{"name":"entity.name.type.pkl"}}},{"name":"constant.character.language.pkl","match":"\\b(true|false|null)\\b"},{"name":"comment.line.pkl","match":"//.*"},{"name":"comment.block.pkl","begin":"/\\*","end":"\\*/"},{"begin":"(?x:\n (\n (?:\\b|\\s*)[\\p{L}_$][\\p{L}0-9_$]* # variable name\n |\n `[^`]+` # quoted variable name\n )\n \\s*\n (:)\n \\s*\n ((?x:\n (?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n)\n \\s*\n (\\|\\s*(?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n))*\n)) # type\n)","end":"\\s*=|,|\\)|^[ \\t]*$","captures":{"1":{"name":"variable.other.property.pkl"},"2":{"name":"punctuation.pkl"},"3":{"name":"entity.name.type.pkl"}}},{"match":"(?x:\n (\n \\b[\\p{L}_$][\\p{L}0-9_$]* # variable name\n |\n `[^`]+` # quoted variable name\n )\n \\s*\n (=)(?!=)\n)","captures":{"1":{"name":"variable.other.property.pkl"},"2":{"name":"punctuation.pkl"}}},{"match":"(:)\\s*((?x:\n (?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n)\n \\s*\n (\\|\\s*(?x:\n [\\p{L}_$][\\p{L}0-9_$]* # ident\n \\s*\n (?:\u003c[^\u003e]*\u003e)? # optional type parameters\n \\s*\n (?:\\([^)]*\\))? # optional constraint (this is an approximation)\n \\s*\n \\?? # optional nulability indicator\n))*\n))","captures":{"1":{"name":"punctuation.pkl"},"2":{"name":"entity.name.type.pkl"}}},{"match":"^\\s*([\\p{L}_$][\\p{L}0-9_$]*)\\s*\\{","captures":{"1":{"name":"variable.other.property.pkl"}}},{"name":"storage.modifier.pkl","match":"\\b(hidden|local|abstract|external|open|in|out|amends|extends|fixed|const)\\b"},{"name":"keyword.pkl","match":"\\b(amends|as|extends|function|is|let|read|read\\?|import|throw|trace)\\b"},{"name":"keyword.control.pkl","match":"\\b(if|else|when|for|import|new)\\b"},{"name":"constant.numeric.hex.pkl","match":"(?x:\n \\b\n 0x(?:[\\da-fA-F][\\da-fA-F_]*[\\da-fA-F]|[\\da-fA-F_])\n \\b\n)"},{"name":"constant.numeric.binary.pkl","match":"(?x:\n \\b\n 0b(?:[0-1][0-1_]*[0-1]|[0-1])\n \\b\n)"},{"name":"constant.numeric.octal.pkl","match":"(?x:\n \\b\n 0o(?:[0-7][0-7_]*[0-7]|[0-7])\n \\b\n)"},{"name":"constant.numeric.decimal.pkl","match":"(?x:\n \\b\n (?:\\d[0-9_]*\\d|\\d)\n \\b\n)"},{"name":"constant.numeric.pkl","match":"(?x:\n \\b\n (?:\n (?:\\d[0-9_]*\\d|\\d)? # 0 or more digits\n \\. # dot literal\n (?:\\d[0-9_]*\\d|\\d) # 1 or more digits\n (?:[eE][+-]?(?:\\d[0-9_]*\\d|\\d))? # optional exponent\n | # OR\n (?:\\d[0-9_]*\\d|\\d) # 1 or more digits\n [eE][+-]?(?:\\d[0-9_]*\\d|\\d) # exponent\n )\n \\b\n)"},{"name":"keyword.operator.pkl","match":"(?x:\n # MATH\n \\+ # add\n |\n - # minus\n |\n \\* # multiply\n |\n / # divide\n |\n ~/ # integer divide\n |\n % # modulo\n |\n \\*\\* # power\n |\n \u003e # greater than\n |\n \u003e= # greater than or equals\n |\n \u003c # less than\n |\n \u003c= # less than or equals\n |\n == # equals\n |\n != # not equals\n\n # LOGICAL\n |\n ! # unary not\n |\n \u0026\u0026 # and\n |\n \\|\\| # or\n |\n\n # MISCELLANEOUS\n \\|\u003e # function pipe\n |\n \\?\\? # nullish coalesce\n |\n !! # non-null assertion\n |\n = # assignment\n |\n -\u003e # lambda arrow\n |\n \\| # type union\n)"},{"name":"variable.language.pkl","match":"\\b(this|module|outer|super)\\b"},{"name":"support.type.pkl","match":"\\b(unknown|never)\\b"},{"name":"meta.brace.pkl","match":"[(){}\\[\\]]"},{"name":"keyword.class.pkl","match":"\\b(class|typealias)\\b"},{"name":"punctuation.pkl","match":"(?x:\n \\.\\? # optional chain\n |\n \\. # member access\n |\n ; # semicolon\n |\n : # colon\n)"},{"name":"entity.name.type.pkl","match":"@[\\p{L}_$][\\p{L}0-9_$]*"},{"name":"string.quoted.triple.0.pkl","begin":"(\"\"\")","end":"(\"\"\")","patterns":[{"name":"constant.character.escape.0.pkl","match":"(?x: # turn on extended mode\n \\\\\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\ # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.0.pkl","begin":"(\")","end":"(?x:\n (\") # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.0.pkl","match":"(?x: # turn on extended mode\n \\\\\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\ # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.1.pkl","begin":"(#\"\"\")","end":"(\"\"\"#)","patterns":[{"name":"constant.character.escape.1.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.1.pkl","begin":"(#\")","end":"(?x:\n (\"\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.1.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.2.pkl","begin":"(##\"\"\")","end":"(\"\"\"##)","patterns":[{"name":"constant.character.escape.2.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.2.pkl","begin":"(##\")","end":"(?x:\n (\"\\#\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.2.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.3.pkl","begin":"(###\"\"\")","end":"(\"\"\"###)","patterns":[{"name":"constant.character.escape.3.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.3.pkl","begin":"(###\")","end":"(?x:\n (\"\\#\\#\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.3.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.4.pkl","begin":"(####\"\"\")","end":"(\"\"\"####)","patterns":[{"name":"constant.character.escape.4.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.4.pkl","begin":"(####\")","end":"(?x:\n (\"\\#\\#\\#\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.4.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.5.pkl","begin":"(#####\"\"\")","end":"(\"\"\"#####)","patterns":[{"name":"constant.character.escape.5.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.5.pkl","begin":"(#####\")","end":"(?x:\n (\"\\#\\#\\#\\#\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.5.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}},{"name":"string.quoted.triple.6.pkl","begin":"(######\"\"\")","end":"(\"\"\"######)","patterns":[{"name":"constant.character.escape.6.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"captures":{"1":{"name":"punctuation.delimiter.pkl"}}},{"name":"string.quoted.double.6.pkl","begin":"(######\")","end":"(?x:\n (\"\\#\\#\\#\\#\\#\\#) # string end\n | # OR\n (.?$) # error; unterminated string (flag last character as an error)\n)","patterns":[{"name":"constant.character.escape.6.pkl","match":"(?x: # turn on extended mode\n \\\\\\#\\#\\#\\#\\#\\#\n (?:\n [trn\"\\\\] # tab, carriage return, newline, quote, backslash\n | # OR\n u # the letter u\n \\{ # curly opening brace literal\n [\\da-fA-F]+ # 1 or more hex number literal\n } # curly end literal\n | # OR\n \\( # interpolation start\n .+? # one or more characters lazily (correct syntax highlighting within here should be provided by semantic tokens)\n \\) # interpolation end\n )\n | # OR\n ( # capture group: invalid escape\n \\\\\\#\\#\\#\\#\\#\\# # the escape char\n . # any character\n )\n)","captures":{"1":{"name":"invalid.illegal.unrecognized-string-escape.pkl"}}}],"beginCaptures":{"1":{"name":"punctuation.delimiter.pkl"}},"endCaptures":{"1":{"name":"punctuation.delimimter.pkl"},"2":{"name":"invalid.illegal.newline.pkl"}}}]}