Files
zed-p8/grammars/pico-8-lua/src/grammar.json
T
kistaro 39d77a8cae v0.2: Pico-8 Lua dialect grammar and language
Reorganize into grammars/<name>/ subdirs ( Zed's [grammars.*] supports
a `path` field, so both grammars ship from this repo without a sibling-
repo split ). Vendor tree-sitter-lua as the fork base for tree-sitter-
pico8-lua; upstream MIT license preserved at grammars/pico-8-lua/
UPSTREAM-LICENSE.md.

Dialect features added: != as ~= alias, \ integer divide, ^^ binary xor,
>>> / <<> / >>< shifts and rotates, compound-assignment statements,
memory peek prefixes @ % $ (% coexists with binary modulo), single-line
`if (cond) stmt [else stmt]` and `while (cond) stmt`, statement-level
print shorthand ?, and `#include path` directives. Identifier rule no
longer accepts ! ? @ $ ( upstream did ).

Pico-8 Lua language ( languages/pico-8-lua/, suffix .p8lua ) ships
highlights with the full ~110 PICO-8 builtins as @function.builtin.
The cart injection now hands __lua__ bodies to pico-8-lua, so .p8 carts
and bare .p8lua files share the dialect-aware grammar. Examples updated
to exercise the dialect end-to-end.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 12:50:41 -07:00

3709 lines
86 KiB
JSON

{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "pico8_lua",
"word": "identifier",
"rules": {
"chunk": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "hash_bang_line"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "BLANK"
}
]
}
]
},
"hash_bang_line": {
"type": "PATTERN",
"value": "#![^\\n]*"
},
"_block": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "SYMBOL",
"name": "return_statement"
}
]
}
]
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "empty_statement"
},
{
"type": "SYMBOL",
"name": "assignment_statement"
},
{
"type": "SYMBOL",
"name": "compound_assignment_statement"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "label_statement"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "goto_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "shorthand_while_statement"
},
{
"type": "SYMBOL",
"name": "repeat_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "shorthand_if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "print_shorthand_statement"
},
{
"type": "SYMBOL",
"name": "include_statement"
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_expression_list"
},
"named": true,
"value": "expression_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"empty_statement": {
"type": "STRING",
"value": ";"
},
"assignment_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variable_assignment_varlist"
},
"named": true,
"value": "variable_list"
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "="
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variable_assignment_explist"
},
"named": true,
"value": "expression_list"
}
]
},
"_variable_assignment_varlist": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
}
}
]
},
"_variable_assignment_explist": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"compound_assignment_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": "\\="
},
{
"type": "STRING",
"value": "^="
},
{
"type": "STRING",
"value": "..="
},
{
"type": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "|="
},
{
"type": "STRING",
"value": "^^="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": ">>>="
},
{
"type": "STRING",
"value": "<<>="
},
{
"type": "STRING",
"value": ">><="
}
]
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"label_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "::"
}
]
},
"break_statement": {
"type": "STRING",
"value": "break"
},
"goto_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "goto"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"do_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "do"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"shorthand_while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"repeat_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "repeat"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "STRING",
"value": "until"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "then"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "REPEAT",
"content": {
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "elseif_statement"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "else_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"elseif_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "elseif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "then"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
}
]
},
"else_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
}
]
},
"shorthand_if_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "clause",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "for_generic_clause"
},
{
"type": "SYMBOL",
"name": "for_numeric_clause"
}
]
}
},
{
"type": "STRING",
"value": "do"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"for_generic_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_name_list"
},
"named": true,
"value": "variable_list"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_expression_list"
},
"named": true,
"value": "expression_list"
}
]
},
"for_numeric_clause": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "="
}
},
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "step",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_name_list": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
}
]
},
"declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_declaration"
},
{
"type": "FIELD",
"name": "local_declaration",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_local_function_declaration"
},
"named": true,
"value": "function_declaration"
}
},
{
"type": "FIELD",
"name": "local_declaration",
"content": {
"type": "SYMBOL",
"name": "variable_declaration"
}
}
]
},
"function_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_function_name"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"_local_function_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "local"
},
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"_function_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_function_name_prefix_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_function_name_method_index_expression"
},
"named": true,
"value": "method_index_expression"
}
]
},
"_function_name_prefix_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_function_name_dot_index_expression"
},
"named": true,
"value": "dot_index_expression"
}
]
},
"_function_name_dot_index_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "table",
"content": {
"type": "SYMBOL",
"name": "_function_name_prefix_expression"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"_function_name_method_index_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "table",
"content": {
"type": "SYMBOL",
"name": "_function_name_prefix_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "local"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_att_name_list"
},
"named": true,
"value": "variable_list"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variable_assignment"
},
"named": true,
"value": "assignment_statement"
}
]
}
]
},
"_variable_assignment": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_att_name_list"
},
"named": true,
"value": "variable_list"
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "="
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variable_assignment_explist"
},
"named": true,
"value": "expression_list"
}
]
},
"_att_name_list": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attribute",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_attrib"
},
"named": true,
"value": "attribute"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attribute",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_attrib"
},
"named": true,
"value": "attribute"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attribute",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_attrib"
},
"named": true,
"value": "attribute"
}
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
}
]
},
"_attrib": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ">"
}
]
},
"_expression_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
"print_shorthand_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "directive",
"content": {
"type": "STRING",
"value": "?"
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
}
]
},
"include_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "directive",
"content": {
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "#include[ \\t]+"
}
}
},
"named": false,
"value": "#include"
}
},
{
"type": "FIELD",
"name": "path",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n\\r]*"
},
"named": true,
"value": "include_path"
}
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "vararg_expression"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "table_constructor"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
}
]
},
"nil": {
"type": "STRING",
"value": "nil"
},
"false": {
"type": "STRING",
"value": "false"
},
"true": {
"type": "STRING",
"value": "true"
},
"number": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "[0-9]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "[0-9]+"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "STRING",
"value": "0X"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-fA-F0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "[a-fA-F0-9]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[a-fA-F0-9]+"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-fA-F0-9]+"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "p"
},
{
"type": "STRING",
"value": "P"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "[0-9]+"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "STRING",
"value": "0B"
}
]
},
{
"type": "PATTERN",
"value": "[01]+"
}
]
}
]
}
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_quote_string"
},
{
"type": "SYMBOL",
"name": "_block_string"
}
]
},
"_quote_string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "\""
},
"named": false,
"value": "\""
}
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_doublequote_string_content"
},
"named": true,
"value": "string_content"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "\""
},
"named": false,
"value": "\""
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "'"
},
"named": false,
"value": "'"
}
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_singlequote_string_content"
},
"named": true,
"value": "string_content"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "'"
},
"named": false,
"value": "'"
}
}
]
}
]
},
"_doublequote_string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]+"
}
}
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
"_singlequote_string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^'\\\\]+"
}
}
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
"_block_string": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_string_start"
},
"named": false,
"value": "[["
}
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_string_content"
},
"named": true,
"value": "string_content"
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_string_end"
},
"named": false,
"value": "]]"
}
}
]
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[\\nabfnrtv\\\\'\"]"
},
{
"type": "PATTERN",
"value": "z\\s*"
},
{
"type": "PATTERN",
"value": "[0-9]{1,3}"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{2}"
},
{
"type": "PATTERN",
"value": "u\\{[0-9a-fA-F]+\\}"
}
]
}
]
}
},
"vararg_expression": {
"type": "STRING",
"value": "..."
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"_function_body": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block"
},
{
"type": "BLANK"
}
]
},
"named": true,
"value": "block"
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_parameter_list": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_vararg_parameter"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_vararg_parameter"
}
]
},
"_vararg_parameter": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "vararg_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_prefix_expression": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
}
},
"variable": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "bracket_index_expression"
},
{
"type": "SYMBOL",
"name": "dot_index_expression"
}
]
},
"bracket_index_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "table",
"content": {
"type": "SYMBOL",
"name": "_prefix_expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"dot_index_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "table",
"content": {
"type": "SYMBOL",
"name": "_prefix_expression"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"function_call": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_prefix_expression"
},
{
"type": "SYMBOL",
"name": "method_index_expression"
}
]
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "arguments"
}
}
]
},
"method_index_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "table",
"content": {
"type": "SYMBOL",
"name": "_prefix_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"arguments": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "table_constructor"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"table_constructor": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_field_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_field_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_field_sep"
},
{
"type": "SYMBOL",
"name": "field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_field_sep"
},
{
"type": "BLANK"
}
]
}
]
},
"_field_sep": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": ";"
}
]
},
"field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "]"
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "="
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "or"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "and"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "~="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "|"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "~"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "^^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<<"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">>"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">>>"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<<>"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">><"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "//"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "\\"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ".."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"unary_expression": {
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "#"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "@"
},
{
"type": "STRING",
"value": "$"
},
{
"type": "STRING",
"value": "%"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"identifier": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[^\\p{Control}\\s!?@$+\\-*/%^#&~|<>=(){}\\[\\];:,.\\\\'\"\\d]"
},
{
"type": "PATTERN",
"value": "[^\\p{Control}\\s!?@$+\\-*/%^#&~|<>=(){}\\[\\];:,.\\\\'\"]*"
}
]
}
},
"comment": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "STRING",
"value": "--"
}
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\r\\n]*"
},
"named": true,
"value": "comment_content"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_comment_start"
},
"named": false,
"value": "[["
}
},
{
"type": "FIELD",
"name": "content",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_comment_content"
},
"named": true,
"value": "comment_content"
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_comment_end"
},
"named": false,
"value": "]]"
}
}
]
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [
[
"parenthesized_expression",
"shorthand_if_statement"
],
[
"parenthesized_expression",
"shorthand_while_statement"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_block_comment_start"
},
{
"type": "SYMBOL",
"name": "_block_comment_content"
},
{
"type": "SYMBOL",
"name": "_block_comment_end"
},
{
"type": "SYMBOL",
"name": "_block_string_start"
},
{
"type": "SYMBOL",
"name": "_block_string_content"
},
{
"type": "SYMBOL",
"name": "_block_string_end"
}
],
"inline": [],
"supertypes": [
"statement",
"expression",
"declaration",
"variable"
]
}