tree-sitter-php
Version:
PHP grammar for tree-sitter
2,266 lines • 155 kB
JSON
{
"name": "php",
"word": "name",
"rules": {
"program": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "text"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "php_tag"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"php_tag": {
"type": "PATTERN",
"value": "<\\?([pP][hH][pP]|=)?"
},
"text_interpolation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?>"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "text"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "php_tag"
},
{
"type": "SYMBOL",
"name": "_eof"
}
]
}
]
},
"text": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "<"
}
}
},
{
"type": "PATTERN",
"value": "[^\\s<][^<]*"
}
]
}
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "empty_statement"
},
{
"type": "SYMBOL",
"name": "compound_statement"
},
{
"type": "SYMBOL",
"name": "named_label_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "switch_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "foreach_statement"
},
{
"type": "SYMBOL",
"name": "goto_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "throw_statement"
},
{
"type": "SYMBOL",
"name": "try_statement"
},
{
"type": "SYMBOL",
"name": "declare_statement"
},
{
"type": "SYMBOL",
"name": "echo_statement"
},
{
"type": "SYMBOL",
"name": "unset_statement"
},
{
"type": "SYMBOL",
"name": "const_declaration"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "class_declaration"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "trait_declaration"
},
{
"type": "SYMBOL",
"name": "namespace_definition"
},
{
"type": "SYMBOL",
"name": "namespace_use_declaration"
},
{
"type": "SYMBOL",
"name": "global_declaration"
},
{
"type": "SYMBOL",
"name": "function_static_declaration"
}
]
},
"empty_statement": {
"type": "PREC",
"value": -1,
"content": {
"type": "STRING",
"value": ";"
}
},
"function_static_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[sS][tT][aA][tT][iI][cC]"
},
"named": false,
"value": "static"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "static_variable_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "static_variable_declaration"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"static_variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"global_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[gG][lL][oO][bB][aA][lL]"
},
"named": false,
"value": "global"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_variable_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_variable_name"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"namespace_definition": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[nN][aA][mM][eE][sS][pP][aA][cC][eE]"
},
"named": false,
"value": "namespace"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "namespace_name"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
}
]
}
]
},
"namespace_use_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[uU][sS][eE]"
},
"named": false,
"value": "use"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[fF][uU][nN][cC][tT][iI][oO][nN]"
},
"named": false,
"value": "function"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[cC][oO][nN][sS][tT]"
},
"named": false,
"value": "const"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "namespace_use_clause"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "namespace_use_clause"
}
]
}
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "SYMBOL",
"name": "namespace_use_group"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"namespace_use_clause": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_aliasing_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"qualified_name": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_name_as_prefix"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_reserved_identifier"
},
"named": true,
"value": "name"
}
]
}
]
},
"namespace_name_as_prefix": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "STRING",
"value": "\\"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[nN][aA][mM][eE][sS][pP][aA][cC][eE]"
},
"named": false,
"value": "namespace"
},
{
"type": "STRING",
"value": "\\"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[nN][aA][mM][eE][sS][pP][aA][cC][eE]"
},
"named": false,
"value": "namespace"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "STRING",
"value": "\\"
}
]
}
]
},
"namespace_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "SYMBOL",
"name": "name"
}
]
}
}
]
},
"namespace_aliasing_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[aA][sS]"
},
"named": false,
"value": "as"
},
{
"type": "SYMBOL",
"name": "name"
}
]
},
"namespace_use_group": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "namespace_use_group_clause"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "namespace_use_group_clause"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"namespace_use_group_clause": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[fF][uU][nN][cC][tT][iI][oO][nN]"
},
"named": false,
"value": "function"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[cC][oO][nN][sS][tT]"
},
"named": false,
"value": "const"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_aliasing_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"trait_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[tT][rR][aA][iI][tT]"
},
"named": false,
"value": "trait"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
}
]
},
"interface_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[iI][nN][tT][eE][rR][fF][aA][cC][eE]"
},
"named": false,
"value": "interface"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
}
]
},
"base_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[eE][xX][tT][eE][nN][dD][sS]"
},
"named": false,
"value": "extends"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "qualified_name"
}
]
}
}
]
}
]
},
"class_declaration": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[cC][lL][aA][sS][sS]"
},
"named": false,
"value": "class"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_interface_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "BLANK"
}
]
}
]
}
},
"declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_member_declaration"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"class_modifier": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[aA][bB][sS][tT][rR][aA][cC][tT]"
},
"named": false,
"value": "abstract"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[fF][iI][nN][aA][lL]"
},
"named": false,
"value": "final"
}
]
},
"class_interface_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[iI][mM][pP][lL][eE][mM][eE][nN][tT][sS]"
},
"named": false,
"value": "implements"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "qualified_name"
}
]
}
}
]
}
]
},
"_member_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "const_declaration"
},
{
"type": "SYMBOL",
"name": "property_declaration"
},
{
"type": "SYMBOL",
"name": "method_declaration"
},
{
"type": "SYMBOL",
"name": "use_declaration"
}
]
},
"const_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[cC][oO][nN][sS][tT]"
},
"named": false,
"value": "const"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "const_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "const_element"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"property_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "property_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "property_element"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"_modifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_modifier"
},
{
"type": "SYMBOL",
"name": "visibility_modifier"
},
{
"type": "SYMBOL",
"name": "static_modifier"
},
{
"type": "SYMBOL",
"name": "class_modifier"
}
]
},
"property_element": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "property_initializer"
},
{
"type": "BLANK"
}
]
}
]
},
"property_initializer": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"method_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "SYMBOL",
"name": "_function_definition_header"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
]
},
"var_modifier": {
"type": "PATTERN",
"value": "[vV][aA][rR]"
},
"static_modifier": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[sS][tT][aA][tT][iI][cC]"
},
"named": false,
"value": "static"
},
"use_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[uU][sS][eE]"
},
"named": false,
"value": "use"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "qualified_name"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "use_list"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
]
},
"use_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "use_instead_of_clause"
},
{
"type": "SYMBOL",
"name": "use_as_clause"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"use_instead_of_clause": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_constant_access_expression"
},
{
"type": "SYMBOL",
"name": "name"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[iI][nN][sS][tT][eE][aA][dD][oO][fF]"
},
"named": false,
"value": "insteadof"
},
{
"type": "SYMBOL",
"name": "name"
}
]
}
},
"use_as_clause": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_constant_access_expression"
},
{
"type": "SYMBOL",
"name": "name"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[aA][sS]"
},
"named": false,
"value": "as"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "name"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "visibility_modifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
"visibility_modifier": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[pP][uU][bB][lL][iI][cC]"
},
"named": false,
"value": "public"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[pP][rR][oO][tT][eE][cC][tT][eE][dD]"
},
"named": false,
"value": "protected"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[pP][rR][iI][vV][aA][tT][eE]"
},
"named": false,
"value": "private"
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_function_definition_header"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"_function_definition_header": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[fF][uU][nN][cC][tT][iI][oO][nN]"
},
"named": false,
"value": "function"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_reserved_identifier"
},
"named": true,
"value": "name"
}
]
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "formal_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_return_type"
},
{
"type": "BLANK"
}
]
}
]
},
"formal_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_parameter"
},
{
"type": "SYMBOL",
"name": "variadic_parameter"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_parameter"
},
{
"type": "SYMBOL",
"name": "variadic_parameter"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"simple_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"variadic_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "..."
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable_name"
}
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "optional_type"
},
{
"type": "SYMBOL",
"name": "_type_name"
},
{
"type": "SYMBOL",
"name": "primitive_type"
}
]
},
"_type_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_name"
},
"named": true,
"value": "type_name"
},
"optional_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_name"
},
{
"type": "SYMBOL",
"name": "primitive_type"
}
]
}
]
},
"primitive_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "array"
},
{
"type": "STRING",
"value": "callable"
},
{
"type": "STRING",
"value": "iterable"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "void"
}
]
},
"cast_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "array"
},
{
"type": "STRING",
"value": "binary"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "boolean"
},
{
"type": "STRING",
"value": "double"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "integer"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "object"
},
{
"type": "STRING",
"value": "real"
},
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "unset"
}
]
},
"_return_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
},
"const_element": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_reserved_identifier"
},
"named": true,
"value": "name"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"echo_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[eE][cC][hH][oO]"
},
"named": false,
"value": "echo"
},
{
"type": "SYMBOL",
"name": "_expressions"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"unset_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unset"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_variable"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"declare_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "declare"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "declare_directive"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[eE][nN][dD][dD][eE][cC][lL][aA][rR][eE]"
},
"named": false,
"value": "enddeclare"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
]
},
"declare_directive": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ticks"
},
{
"type": "STRING",
"value": "encoding"
},
{
"type": "STRING",
"value": "strict_types"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_literal"
}
]
},
"_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "_string"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "null"
}
]
},
"float": {
"type": "PATTERN",
"value": "\\d*((\\.\\d*)?([eE][\\+-]?\\d+)|(\\.\\d*)([eE][\\+-]?\\d+)?)"
},
"try_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[tT][rR][yY]"
},
"named": false,
"value": "try"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "catch_clause"
},
{
"type": "SYMBOL",
"name": "finally_clause"
}
]
}
}
]
},
"catch_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[cC][aA][tT][cC][hH]"
},
"named": false,
"value": "catch"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_name"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "variable_name"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"finally_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[fF][iI][nN][aA][lL][lL][yY]"
},
"named": false,
"value": "finally"
},
{
"type": "FIELD"