{
"name": "slint",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_item"
}
},
"_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "component_item"
},
{
"type": "SYMBOL",
"name": "import_statement"
},
{
"type": "SYMBOL",
"name": "export_statement"
},
{
"type": "SYMBOL",
"name": "global_single"
},
{
"type": "SYMBOL",
"name": "struct_item"
}
]
},
"struct_item": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "struct_block_definition"
}
]
},
"struct_block_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"export_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "vis"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"global_single": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "vis"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "global"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_component_body"
}
]
},
"import_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "from"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "STRING",
"value": ";"
}
]
},
"component_item": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_conditional_element"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "vis"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_component_body"
},
"named": true,
"value": "comp_body"
}
]
},
"_conditional_element": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ":"
}
]
},
"_component_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_property"
},
{
"type": "SYMBOL",
"name": "component_item"
},
{
"type": "SYMBOL",
"name": "for_loop"
},
{
"type": "SYMBOL",
"name": "animate_statement"
},
{
"type": "SYMBOL",
"name": "state_statement"
},
{
"type": "SYMBOL",
"name": "transition_statement"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "SYMBOL",
"name": "children_macro"
}
]
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"transition_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "transitions"
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "transition",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "out"
}
]
}
},
{
"type": "FIELD",
"name": "state",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "animate_statement"
},
{
"type": "STRING",
"value": "}"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"state_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "states"
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "state_expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_property"
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"animate_statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "animate"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_property"
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"for_loop": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "component_item"
}
]
},
"_property": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_assign_property"
},
"named": true,
"value": "assign_property"
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_define_property"
},
"named": true,
"value": "define_property"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SYMBOL",
"name": "define_assign_property"
},
{
"type": "SYMBOL",
"name": "two_way_property"
},
{
"type": "SYMBOL",
"name": "call_back_definition"
},
{
"type": "SYMBOL",
"name": "call_back_handler"
}
]
},
"call_back_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "callback"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "call_back_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<=>"
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "field_expression"
}
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"call_back_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"call_back_handler": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_function_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "call_back_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "handler_body"
}
]
},
"handler_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"two_way_property": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_define_property"
},
{
"type": "STRING",
"value": "<=>"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ";"
}
]
},
"define_assign_property": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_define_property"
},
{
"type": "SYMBOL",
"name": "_assign_property"
}
]
},
"_define_property": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "property"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "SYMBOL",
"name": "array_literal"
},
{
"type": "SYMBOL",
"name": "struct_block_definition"
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_assign_property": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_all_expressions"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "_all_expressions"
}
]
}
},
"_all_expressions": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "ternary_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "index_expression"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "if_expression"
},
{
"type": "SYMBOL",
"name": "assign_expression"
},
{
"type": "SYMBOL",
"name": "comp_assign_expression"
},
{
"type": "SYMBOL",
"name": "field_expression"
},
{
"type": "SYMBOL",
"name": "struct_block_definition"
},
{
"type": "SYMBOL",
"name": "_macro"
},
{
"type": "SYMBOL",
"name": "_literal"
}
]
}
},
"if_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "consequence_body"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "if_expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "consequence_body"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"consequence_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"state_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "state",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"index_expression": {
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"assign_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
}
},
"comp_assign_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"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": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"call_expression": {
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "function_call_args"
}
}
]
}
},
"function_call_args": {
"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": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"field_expression": {
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"bool_literal": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"unary_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "!"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"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": 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": 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_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": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"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": "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": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<<"
},
{
"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": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
}
]
},
"ternary_expression": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"_macro": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "linear_grad_macro"
},
{
"type": "SYMBOL",
"name": "radial_grad_macro"
},
{
"type": "SYMBOL",
"name": "image_macro"
}
]
}
]
},
"children_macro": {
"type": "STRING",
"value": "children"
},
"linear_grad_macro": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "linear-gradient"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"radial_grad_macro": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "radial-gradient"
},
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": "circle"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"image_macro": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "image-url"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_number"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "array_literal"
},
{
"type": "SYMBOL",
"name": "bool_literal"
},
{
"type": "SYMBOL",
"name": "color_literal"
}
]
},
"array_literal": {
"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": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"string_literal": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_unescaped_double_string_fragment"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_unescaped_single_string_fragment"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"_unescaped_double_string_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]+"
}
}
},
"_unescaped_single_string_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^'\\\\]+"
}
}
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^xu]"
},
{
"type": "PATTERN",
"value": "u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "u{[0-9a-fA-F]+}"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{2}"
}
]
}
]
}
},
"vis": {
"type": "STRING",
"value": "export"
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_builtin"
},
{
"type": "SYMBOL",
"name": "_ident_reg"
}
]
},
"_ident_reg": {
"type": "PATTERN",
"value": "[_\\p{XID_Start}][_\\-\\p{XID_Continue}]*"
},
"color_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[\\da-fA-F]{3}"
},
{
"type": "PATTERN",
"value": "[\\da-fA-F]{6}"
},
{
"type": "PATTERN",
"value": "[\\da-fA-F]{8}"
}
]
}
]
},
"_number": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int_literal"
},
{
"type": "SYMBOL",
"name": "float_literal"
}
]
},
{
"type": "SYMBOL",
"name": "num_units"
}
]
},
"num_units": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int_literal"
},
{
"type": "SYMBOL",
"name": "float_literal"
}
]
},
{
"type": "SYMBOL",
"name": "units"
}
]
},
"int_literal": {
"type": "PATTERN",
"value": "\\d+"
},
"float_literal": {
"type": "PATTERN",
"value": "\\d+\\.\\d+"
},
"units": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "px"
},
{
"type": "STRING",
"value": "ms"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "STRING",
"value": "deg"
},
{
"type": "STRING",
"value": "rad"
}
]
},
"_type_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_identifier"
},
"_function_identifier": {
"type": "PREC_LEFT",
"value": 15,
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "function_identifier"
}
},
"_builtin": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constant_builtin"
},
{
"type": "SYMBOL",
"name": "type_builtin"
},
{
"type": "SYMBOL",
"name": "function_builtin"
},
{
"type": "SYMBOL",
"name": "variable_builtin"
}
]
},
"constant_builtin": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ease"
},
{
"type": "STRING",
"value": "ease-in"
},
{
"type": "STRING",
"value": "ease_in"
},
{
"type": "STRING",
"value": "ease_in_out"
},
{
"type": "STRING",
"value": "ease-in-out"
},
{
"type": "STRING",
"value": "ease_out"
},
{
"type": "STRING",
"value": "ease-out"
},
{
"type": "STRING",
"value": "start"
},
{
"type": "STRING",
"value": "end"
},
{
"type": "STRING",
"value": "black"
},
{
"type": "STRING",
"value": "blue"
},
{
"type": "STRING",
"value": "green"
},
{
"type": "STRING",
"value": "red"
},
{
"type": "STRING",
"value": "yellow"
},
{
"type": "STRING",
"value": "white"
},
{
"type": "STRING",
"value": "gray"
},
{
"type": "STRING",
"value": "transparent"
}
]
},
"type_builtin": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "angle"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "brush"
},
{
"type": "STRING",
"value": "color"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "image"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "length"
},
{
"type": "STRING",
"value": "percent"
},
{
"type": "STRING",
"value": "physical-length"
},
{
"type": "STRING",
"value": "physical_length"
},
{
"type": "STRING",
"value": "string"
}
]
},
"function_builtin": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "debug"
},
{
"type": "STRING",
"value": "animation-tick"
},
{
"type": "STRING",
"value": "min"
},
{
"type": "STRING",
"value": "max"
},
{
"type": "STRING",
"value": "mod"
},
{
"type": "STRING",
"value": "abs"
},
{
"type": "STRING",
"value": "round"
},
{
"type": "STRING",
"value": "ceil"
},
{
"type": "STRING",
"value": "floor"
},
{
"type": "STRING",
"value": "sin"
},
{
"type": "STRING",
"value": "cos"
},
{
"type": "STRING",
"value": "tan"
},
{
"type": "STRING",
"value": "asin"
},
{
"type": "STRING",
"value": "acos"
},
{
"type": "STRING",
"value": "atan"
},
{
"type": "STRING",
"value": "sqrt"
},
{
"type": "STRING",
"value": "pow"
},
{
"type": "STRING",
"value": "log"
},
{
"type": "STRING",
"value": "rgb"
}
]
},
"variable_builtin": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "easing"
},
{
"type": "STRING",
"value": "duration"
},
{
"type": "STRING",
"value": "parent"
},
{
"type": "STRING",
"value": "root"
}
]
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "(\\\\(.|\\r?\\n)|[^\\\\\\n])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s|\\\\\\r?\\n"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}