tree-sitter-php
Version:
PHP grammar for tree-sitter
2,232 lines • 233 kB
JSON
{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.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]|=)?"
},
"php_end_tag": {
"type": "STRING",
"value": "?>"
},
"text_interpolation": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "php_end_tag"
},
{
"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": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"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": "try_statement"
},
{
"type": "SYMBOL",
"name": "declare_statement"
},
{
"type": "SYMBOL",
"name": "echo_statement"
},
{
"type": "SYMBOL",
"name": "exit_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": "enum_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": ";"
}
},
"reference_modifier": {
"type": "STRING",
"value": "&"
},
"function_static_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "static",
"flags": "i"
},
"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": "global",
"flags": "i"
},
"named": false,
"value": "global"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_variable"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_simple_variable"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"namespace_definition": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "namespace",
"flags": "i"
},
"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": "use",
"flags": "i"
},
"named": false,
"value": "use"
},
{
"type": "CHOICE",
"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": "SYMBOL",
"name": "_namespace_use_group"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"namespace_use_clause": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_namespace_use_type"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "SYMBOL",
"name": "qualified_name"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "as",
"flags": "i"
},
"named": false,
"value": "as"
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "name"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_namespace_use_type": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "function",
"flags": "i"
},
"named": false,
"value": "function"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "const",
"flags": "i"
},
"named": false,
"value": "const"
}
]
},
"qualified_name": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "prefix",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\\"
}
]
}
},
{
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
]
},
"relative_name": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "prefix",
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "namespace",
"flags": "i"
},
"named": false,
"value": "namespace"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "SYMBOL",
"name": "namespace_name"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\\"
}
]
}
},
{
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
]
},
"_name": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "static",
"flags": "i"
},
"named": true,
"value": "name"
},
{
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
},
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "SYMBOL",
"name": "relative_name"
}
]
},
"namespace_name": {
"type": "SEQ",
"members": [
{
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "nothing"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "nothing"
}
]
}
}
]
},
"_namespace_use_group": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_namespace_use_type"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "SYMBOL",
"name": "namespace_name"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "namespace_use_group"
}
}
]
},
"namespace_use_group": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"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": "STRING",
"value": "}"
}
]
},
"trait_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "trait",
"flags": "i"
},
"named": false,
"value": "trait"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
}
]
},
"interface_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "interface",
"flags": "i"
},
"named": false,
"value": "interface"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
},
{
"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": "extends",
"flags": "i"
},
"named": false,
"value": "extends"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
}
]
}
]
},
"enum_declaration": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "enum",
"flags": "i"
},
"named": false,
"value": "enum"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "int"
}
]
},
"named": true,
"value": "primitive_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_interface_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enum_declaration_list"
}
}
]
}
},
"enum_declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_enum_member_declaration"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_enum_member_declaration": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_class_const_declaration"
},
"named": true,
"value": "const_declaration"
},
{
"type": "SYMBOL",
"name": "enum_case"
},
{
"type": "SYMBOL",
"name": "method_declaration"
},
{
"type": "SYMBOL",
"name": "use_declaration"
}
]
},
"enum_case": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "case",
"flags": "i"
},
"named": false,
"value": "case"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "nothing"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"class_declaration": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "class",
"flags": "i"
},
"named": false,
"value": "class"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "classes"
}
},
{
"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"
}
}
]
}
},
"declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_member_declaration"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"final_modifier": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "final",
"flags": "i"
},
"named": false,
"value": "final"
},
"abstract_modifier": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "abstract",
"flags": "i"
},
"named": false,
"value": "abstract"
},
"readonly_modifier": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "readonly",
"flags": "i"
},
"named": false,
"value": "readonly"
},
"class_interface_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "implements",
"flags": "i"
},
"named": false,
"value": "implements"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
}
]
}
]
},
"_member_declaration": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_class_const_declaration"
},
"named": true,
"value": "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": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "const",
"flags": "i"
},
"named": false,
"value": "const"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_const_element"
},
"named": true,
"value": "const_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_const_element"
},
"named": true,
"value": "const_element"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"_class_const_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "final_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "const",
"flags": "i"
},
"named": false,
"value": "const"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_class_const_element"
},
"named": true,
"value": "const_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_class_const_element"
},
"named": true,
"value": "const_element"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"property_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "property_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "property_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "SYMBOL",
"name": "property_hook_list"
}
]
}
]
},
"_modifier": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_modifier"
},
{
"type": "SYMBOL",
"name": "visibility_modifier"
},
{
"type": "SYMBOL",
"name": "static_modifier"
},
{
"type": "SYMBOL",
"name": "final_modifier"
},
{
"type": "SYMBOL",
"name": "abstract_modifier"
},
{
"type": "SYMBOL",
"name": "readonly_modifier"
}
]
}
},
"property_element": {
"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": "default_value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"property_hook_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "property_hook"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"property_hook": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "final",
"content": {
"type": "SYMBOL",
"name": "final_modifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "reference_modifier",
"content": {
"type": "SYMBOL",
"name": "reference_modifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "formal_parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_property_hook_body"
}
]
},
"_property_hook_body": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"method_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "attributes",
"content": {
"type": "SYMBOL",
"name": "attribute_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_modifier"
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "function",
"flags": "i"
},
"named": false,
"value": "function"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "reference_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "RESERVED",
"content": {
"type": "SYMBOL",
"name": "name"
},
"context_name": "nothing"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "formal_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_return_type"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
]
},
"var_modifier": {
"type": "PATTERN",
"value": "var",
"flags": "i"
},
"static_modifier": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "static",
"flags": "i"
},
"named": false,
"value": "static"
},
"use_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "use",
"flags": "i"
},
"named": false,
"value": "use"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_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": "SYMBOL",
"name": "class_constant_access_expression"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "insteadof",
"flags": "i"
},
"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": "as",
"flags": "i"
},
"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": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "public",
"flags": "i"
},
"named": false,
"value": "public"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "protected",
"flags": "i"
},
"named": false,
"value": "protected"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "private