Comprehensive grammar rewrite to conform to SCL specs. Improves parse success rate from 0% to 90% (187 of 208 reference project files). Case-insensitive keywords: - Add ci() helper for case-insensitive token matching - All keywords (TYPE, STRUCT, VAR, IF, etc.) now match any case - All type names (BOOL, Int, Dint, etc.) now match any case New grammar constructs: - RETURN statement - GOTO statement - AUTHOR/FAMILY/NAME block headers - VAR DB_SPECIFIC section - ARRAY[*] (variable-length arrays) - Multidimensional ARRAY[a..b, c..d] - REF_TO <type> - VARIANT type - Anonymous STRUCT...END_STRUCT as a type - Compound assignment operators (+=, -=, *=, /=, &=, |=, ^=) - Chained assignments (lvalue := lvalue := expression) - Bit access (lvalue.%X0) - Method calls (lvalue.field(...)) - Struct/array initializers ((TRUE, FALSE, ...), (name := value)) - END_STRUCT; (semicolon after END_STRUCT in UDTs) - Typed DB associated block name (DATA_BLOCK "Name" : "UDT") - BOM (Byte Order Mark) handling - TITLE as single-token statement (avoids keyword/identifier conflict) New type_builtin aliases: - LWORD, LINT, ULINT, UDINT, DATE, TIME_OF_DAY, DATE_AND_TIME - S5TIME, LTIME, DTL, LTOD, LDT, LTIME_OF_DAY, DATE_AND_LTIME New literal formats: - Binary (2#...), Octal (8#...) - BOOL#TRUE/FALSE - Typed integers (INT#, SINT#, DINT#, etc.) - Date/time literals (DATE#, TOD#, DT#, LTIME#, S5TIME#, DTL#) - WSTRING# and STRING# typed string literals - C# char literal - Time units with case-insensitive matching (T#1S, T#2s) Updated constructs: - CASE labels: comma-separated lists, string labels - Function call parameters: interleaved input (:=) and output (=>) params - FOR loop variable: accepts prefixed_identifier (#tempVar) - Array bounds: accept string/identifier constants (Array[0.."MAX"]) - Author/Family values: accept unquoted text with hyphens/slashes Known remaining issues (21 files, 10%): - Triple-nested parentheses in expressions - Some multi-line function call parameter patterns - END_REGION with trailing region name - Complex chained field access in assignments
1922 lines
32 KiB
JSON
1922 lines
32 KiB
JSON
[
|
|
{
|
|
"type": "array_access",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "array_type",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "assignment",
|
|
"named": true,
|
|
"fields": {
|
|
"target": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"value": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "chained_assignment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "attribute",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "attribute_value",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "constant",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "binary_expression",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "operator",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "bit_access",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "case_item",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "range",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "case_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "case_item",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "else_clause",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "chained_assignment",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "chained_assignment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "char_literal",
|
|
"named": true,
|
|
"fields": {}
|
|
},
|
|
{
|
|
"type": "continue_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "data_block",
|
|
"named": true,
|
|
"fields": {
|
|
"associated": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_db_specific_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "else_clause",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "elsif_clause",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "empty_statement",
|
|
"named": true,
|
|
"fields": {}
|
|
},
|
|
{
|
|
"type": "exit_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "array_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "binary_expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "binary_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "bit_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "bool_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "char_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "date_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "field_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "function_call",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "hex_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "octal_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "time_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "typed_int_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "unary_expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "wstring_literal",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "fb_call",
|
|
"named": true,
|
|
"fields": {
|
|
"instance": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "fb_parameter_list",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "fb_parameter",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "fb_parameter_list",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "fb_parameter",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "field_access",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "for_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "function",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_constant_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_non_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_temp_declaration",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "function_block",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_constant_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_db_specific_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_non_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_temp_declaration",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "function_call",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "method_callee",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "parameter_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "function_name",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "goto_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "if_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "else_clause",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "elsif_clause",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "lvalue",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "array_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "bit_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "field_access",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "function_name",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "method_callee",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "lvalue",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "organization_block",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "parameter",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "parameter_list",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "parameter",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "prefixed_identifier",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefix",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "range",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "ref_type",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "region_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "region_name",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "repeat_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "return_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "source_file",
|
|
"named": true,
|
|
"root": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "bom",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "data_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "function",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "function_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "organization_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type_definition",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "assignment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "case_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "continue_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "empty_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "exit_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "fb_call",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "for_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "function_call",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "goto_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "if_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "region_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "repeat_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "return_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_constant_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_db_specific_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_non_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_retain_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_temp_declaration",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "while_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true,
|
|
"fields": {}
|
|
},
|
|
{
|
|
"type": "string_type",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type_builtin",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "struct_initializer",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "struct_initializer",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "struct_type",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "type",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "array_type",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "ref_type",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string_type",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "struct_type",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "type_builtin",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "type_builtin",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "type_builtin",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "type_definition",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "unary_expression",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "operator",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_constant_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_db_specific_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true,
|
|
"fields": {
|
|
"name": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"type": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "type",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "attribute_list",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "struct_initializer",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_non_retain_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_retain_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "var_temp_declaration",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "block_comment",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "var_item",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "while_statement",
|
|
"named": true,
|
|
"fields": {},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "expression",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "\"",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "\"\"",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "%",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "&=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "'",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "''",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "(",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ")",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "*",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "*=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "+",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "+=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ",",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "-",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "-=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ".",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "..",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "/",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "/=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ":",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ":=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ";",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "<",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "<=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "<>",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "=>",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ">",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ">=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "C#",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "[",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "]",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "^=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "author_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "binary_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "block_comment",
|
|
"named": true,
|
|
"extra": true
|
|
},
|
|
{
|
|
"type": "bom",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "bool_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "c_style_comment",
|
|
"named": true,
|
|
"extra": true
|
|
},
|
|
{
|
|
"type": "constant",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "date_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "hex_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "identifier",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "keyword",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "line_comment",
|
|
"named": true,
|
|
"extra": true
|
|
},
|
|
{
|
|
"type": "number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "octal_number",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "operator",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "prefix",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "region_name",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "time_value",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "title_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "typed_int_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "wstring_literal",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "{",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "|=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "}",
|
|
"named": false
|
|
}
|
|
] |