Files
tia-lsp/src/grammar.json
T
lazar fb55915147 feat: major grammar upgrade for SCL spec conformance (Phase 1)
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
2026-07-18 19:19:03 +02:00

5283 lines
122 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "scl",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "bom"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "organization_block"
},
{
"type": "SYMBOL",
"name": "function_block"
},
{
"type": "SYMBOL",
"name": "function"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "data_block"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
}
}
]
},
"title_statement": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[Tt][Ii][Tt][Ll][Ee]"
},
{
"type": "PATTERN",
"value": "\\s*=\\s*"
},
{
"type": "PATTERN",
"value": "[^\\n\\r]+"
}
]
}
},
"author_value": {
"type": "TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[a-zA-Z0-9_\\-\\/]"
}
}
},
"type_definition": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Yy][Pp][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Aa][Mm][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Uu][Tt][Hh][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Mm][Ii][Ll][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Ee][Rr][Ss][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ss][Tt][Rr][Uu][Cc][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ss][Tt][Rr][Uu][Cc][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Tt][Yy][Pp][Ee]"
}
},
"named": true,
"value": "keyword"
}
]
},
"data_block": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Aa][Tt][Aa]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Aa][Mm][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Uu][Tt][Hh][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Mm][Ii][Ll][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Ee][Rr][Ss][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Oo][Nn]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "associated",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_declaration"
},
{
"type": "SYMBOL",
"name": "var_db_specific_declaration"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Ee][Gg][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Dd][Aa][Tt][Aa]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
}
]
},
"organization_block": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Oo][Rr][Gg][Aa][Nn][Ii][Zz][Aa][Tt][Ii][Oo][Nn]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Aa][Mm][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Uu][Tt][Hh][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Mm][Ii][Ll][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Ee][Rr][Ss][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "var_declaration"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Ee][Gg][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Oo][Rr][Gg][Aa][Nn][Ii][Zz][Aa][Tt][Ii][Oo][Nn]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
}
]
},
"function_block": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Aa][Mm][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Uu][Tt][Hh][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Mm][Ii][Ll][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Ee][Rr][Ss][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_declaration"
},
{
"type": "SYMBOL",
"name": "var_temp_declaration"
},
{
"type": "SYMBOL",
"name": "var_constant_declaration"
},
{
"type": "SYMBOL",
"name": "var_retain_declaration"
},
{
"type": "SYMBOL",
"name": "var_non_retain_declaration"
},
{
"type": "SYMBOL",
"name": "var_db_specific_declaration"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Ee][Gg][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]_[Bb][Ll][Oo][Cc][Kk]"
}
},
"named": true,
"value": "keyword"
}
]
},
"function": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "title_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Aa][Mm][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Uu][Tt][Hh][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Mm][Ii][Ll][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "author_value"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Ee][Rr][Ss][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_declaration"
},
{
"type": "SYMBOL",
"name": "var_temp_declaration"
},
{
"type": "SYMBOL",
"name": "var_constant_declaration"
},
{
"type": "SYMBOL",
"name": "var_retain_declaration"
},
{
"type": "SYMBOL",
"name": "var_non_retain_declaration"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Ee][Gg][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ff][Uu][Nn][Cc][Tt][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
"attribute_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SYMBOL",
"name": "attribute"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "attribute_value"
}
]
},
"attribute_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Rr][Uu][Ee]"
}
},
"named": true,
"value": "constant"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Aa][Ll][Ss][Ee]"
}
},
"named": true,
"value": "constant"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"var_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Ii][Nn][Pp][Uu][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Oo][Uu][Tt][Pp][Uu][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Ii][Nn]_[Oo][Uu][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Tt][Ee][Mm][Pp]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Cc][Oo][Nn][Ss][Tt][Aa][Nn][Tt]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Oo][Nn]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Cc][Oo][Nn][Ss][Tt][Aa][Nn][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Nn][Oo][Nn]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_temp_declaration": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Tt][Ee][Mm][Pp]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_constant_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Cc][Oo][Nn][Ss][Tt][Aa][Nn][Tt]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Cc][Oo][Nn][Ss][Tt][Aa][Nn][Tt]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_retain_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_non_retain_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Oo][Nn]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]_[Nn][Oo][Nn]_[Rr][Ee][Tt][Aa][Ii][Nn]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_db_specific_declaration": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Bb]_[Ss][Pp][Ee][Cc][Ii][Ff][Ii][Cc]"
}
},
"named": true,
"value": "keyword"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Vv][Aa][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"var_item": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "struct_initializer"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_builtin"
},
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "ref_type"
},
{
"type": "SYMBOL",
"name": "struct_type"
},
{
"type": "SYMBOL",
"name": "string_type"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
"type_builtin": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Oo][Oo][Ll]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Yy][Tt][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ww][Oo][Rr][Dd]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Ww][Oo][Rr][Dd]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Ww][Oo][Rr][Dd]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ss][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Uu][Ss][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Uu][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Uu][Dd][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Uu][Ll][Ii][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Aa][Ll]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Rr][Ee][Aa][Ll]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Cc][Hh][Aa][Rr]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ww][Cc][Hh][Aa][Rr]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Ii][Mm][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Tt][Ii][Mm][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ss]5[Tt][Ii][Mm][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Aa][Tt][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Ii][Mm][Ee]_[Oo][Ff]_[Dd][Aa][Yy]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Oo][Dd]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Tt][Oo][Dd]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Tt][Ii][Mm][Ee]_[Oo][Ff]_[Dd][Aa][Yy]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Aa][Tt][Ee]_[Aa][Nn][Dd]_[Tt][Ii][Mm][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ll][Dd][Tt]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Aa][Tt][Ee]_[Aa][Nn][Dd]_[Ll][Tt][Ii][Mm][Ee]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Tt][Ll]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Vv][Aa][Rr][Ii][Aa][Nn][Tt]"
}
},
"named": true,
"value": "type_builtin"
}
]
},
"string_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ss][Tt][Rr][Ii][Nn][Gg]"
}
},
"named": true,
"value": "type_builtin"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ww][Ss][Tt][Rr][Ii][Nn][Gg]"
}
},
"named": true,
"value": "type_builtin"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"array_type": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Rr][Rr][Aa][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "STRING",
"value": ".."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "]"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Oo][Ff]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
"ref_type": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Ff]_[Tt][Oo]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
"struct_type": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ss][Tt][Rr][Uu][Cc][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "var_item"
},
{
"type": "SYMBOL",
"name": "block_comment"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ss][Tt][Rr][Uu][Cc][Tt]"
}
},
"named": true,
"value": "keyword"
}
]
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "fb_call"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "case_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "repeat_statement"
},
{
"type": "SYMBOL",
"name": "region_statement"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "goto_statement"
},
{
"type": "SYMBOL",
"name": "exit_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "empty_statement"
},
{
"type": "SYMBOL",
"name": "var_declaration"
},
{
"type": "SYMBOL",
"name": "var_temp_declaration"
},
{
"type": "SYMBOL",
"name": "var_constant_declaration"
},
{
"type": "SYMBOL",
"name": "var_retain_declaration"
},
{
"type": "SYMBOL",
"name": "var_non_retain_declaration"
},
{
"type": "SYMBOL",
"name": "var_db_specific_declaration"
}
]
},
"empty_statement": {
"type": "STRING",
"value": ";"
},
"fb_call": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "instance",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "prefixed_identifier"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fb_parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"fb_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "fb_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "fb_parameter"
}
]
}
}
]
},
"fb_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "STRING",
"value": "=>"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "target",
"content": {
"type": "SYMBOL",
"name": "lvalue"
}
},
{
"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": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "chained_assignment"
}
]
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"chained_assignment": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lvalue"
},
{
"type": "STRING",
"value": ":="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "chained_assignment"
}
]
}
]
}
},
"lvalue": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "prefixed_identifier"
},
{
"type": "SYMBOL",
"name": "field_access"
},
{
"type": "SYMBOL",
"name": "array_access"
},
{
"type": "SYMBOL",
"name": "function_name"
},
{
"type": "SYMBOL",
"name": "bit_access"
}
]
},
"function_name": {
"type": "SYMBOL",
"name": "string"
},
"prefixed_identifier": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "#"
},
"named": true,
"value": "prefix"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"field_access": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lvalue"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "prefixed_identifier"
}
]
}
]
},
"array_access": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lvalue"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "]"
}
]
},
"bit_access": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lvalue"
},
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "%"
},
{
"type": "PATTERN",
"value": "[A-Za-z]+"
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ii][Ff]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Hh][Ee][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "elsif_clause"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ii][Ff]"
}
},
"named": true,
"value": "keyword"
}
]
},
"elsif_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Ll][Ss][Ii][Ff]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Hh][Ee][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Ll][Ss][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"case_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Cc][Aa][Ss][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Oo][Ff]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "case_item"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Cc][Aa][Ss][Ee]"
}
},
"named": true,
"value": "keyword"
}
]
},
"case_item": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "prefixed_identifier"
},
{
"type": "SYMBOL",
"name": "range"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"range": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "number"
}
]
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ff][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "prefixed_identifier"
}
]
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Tt][Oo]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Bb][Yy]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Oo]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ff][Oo][Rr]"
}
},
"named": true,
"value": "keyword"
}
]
},
"while_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ww][Hh][Ii][Ll][Ee]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Dd][Oo]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Ww][Hh][Ii][Ll][Ee]"
}
},
"named": true,
"value": "keyword"
}
]
},
"repeat_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Pp][Ee][Aa][Tt]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Uu][Nn][Tt][Ii][Ll]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Rr][Ee][Pp][Ee][Aa][Tt]"
}
},
"named": true,
"value": "keyword"
}
]
},
"region_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Gg][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "region_name"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Nn][Dd]_[Rr][Ee][Gg][Ii][Oo][Nn]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "region_name"
},
{
"type": "BLANK"
}
]
}
]
},
"region_name": {
"type": "TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-zA-Z0-9_\\-\\/]"
},
{
"type": "PATTERN",
"value": "[ \\t]+"
}
]
}
}
},
"return_statement": {
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Rr][Ee][Tt][Uu][Rr][Nn]"
}
},
"named": true,
"value": "keyword"
},
"goto_statement": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Gg][Oo][Tt][Oo]"
}
},
"named": true,
"value": "keyword"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"function_call": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "method_callee"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"method_callee": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lvalue"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "parameter"
}
]
}
}
]
},
"parameter": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "hex_number"
},
{
"type": "SYMBOL",
"name": "binary_number"
},
{
"type": "SYMBOL",
"name": "octal_number"
},
{
"type": "SYMBOL",
"name": "time_value"
},
{
"type": "SYMBOL",
"name": "date_literal"
},
{
"type": "SYMBOL",
"name": "bool_literal"
},
{
"type": "SYMBOL",
"name": "typed_int_literal"
},
{
"type": "SYMBOL",
"name": "wstring_literal"
},
{
"type": "SYMBOL",
"name": "char_literal"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "prefixed_identifier"
},
{
"type": "SYMBOL",
"name": "field_access"
},
{
"type": "SYMBOL",
"name": "array_access"
},
{
"type": "SYMBOL",
"name": "bit_access"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "function_call"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
}
]
},
"unary_expression": {
"type": "PREC_RIGHT",
"value": 10,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Nn][Oo][Tt]"
}
},
"named": true,
"value": "operator"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Oo][Rr]"
}
},
"named": true,
"value": "operator"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Xx][Oo][Rr]"
}
},
"named": true,
"value": "operator"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Aa][Nn][Dd]"
}
},
"named": true,
"value": "operator"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "<>"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Mm][Oo][Dd]"
}
},
"named": true,
"value": "operator"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
"struct_initializer": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_initializer"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "struct_initializer"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_initializer"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "struct_initializer"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"number": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "\\d+(\\.\\d+)?"
}
},
"hex_number": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "16#"
},
{
"type": "PATTERN",
"value": "[0-9A-Fa-f_]+"
}
]
}
},
"binary_number": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "2#"
},
{
"type": "PATTERN",
"value": "[01_]+"
}
]
}
},
"octal_number": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "8#"
},
{
"type": "PATTERN",
"value": "[0-7_]+"
}
]
}
},
"time_value": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[Tt]#"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\d+"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[Nn][Ss]"
},
{
"type": "PATTERN",
"value": "[Uu][Ss]"
},
{
"type": "PATTERN",
"value": "[Mm][Ss]"
},
{
"type": "PATTERN",
"value": "[Ss]"
},
{
"type": "PATTERN",
"value": "[Mm][Ii][Nn]"
},
{
"type": "PATTERN",
"value": "[Hh]"
},
{
"type": "PATTERN",
"value": "[Dd]"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "_[\\d_]+[A-Za-z]+"
},
{
"type": "BLANK"
}
]
}
]
}
},
"date_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[Dd][Aa][Tt][Ee]#"
},
{
"type": "PATTERN",
"value": "[Tt][Oo][Dd]#"
},
{
"type": "PATTERN",
"value": "[Dd][Tt]#"
},
{
"type": "PATTERN",
"value": "[Ll][Tt][Ii][Mm][Ee]#"
},
{
"type": "PATTERN",
"value": "[Ss]5[Tt][Ii][Mm][Ee]#"
},
{
"type": "PATTERN",
"value": "[Ll][Dd][Tt]#"
},
{
"type": "PATTERN",
"value": "[Ll][Tt][Oo][Dd]#"
},
{
"type": "PATTERN",
"value": "[Dd][Tt][Ll]#"
}
]
},
{
"type": "PATTERN",
"value": "[\\d:_\\-]+"
}
]
}
},
"bool_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[Bb][Oo][Oo][Ll]#"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "TRUE"
},
{
"type": "STRING",
"value": "FALSE"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "True"
},
{
"type": "STRING",
"value": "False"
}
]
}
]
}
},
"typed_int_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[Uu]?[Ss][Ii][Nn][Tt]#"
},
{
"type": "PATTERN",
"value": "[Uu]?[Ii][Nn][Tt]#"
},
{
"type": "PATTERN",
"value": "[Uu]?[Dd][Ii][Nn][Tt]#"
},
{
"type": "PATTERN",
"value": "[Uu]?[Ll][Ii][Nn][Tt]#"
},
{
"type": "PATTERN",
"value": "L#"
},
{
"type": "PATTERN",
"value": "C#"
},
{
"type": "PATTERN",
"value": "LW#"
}
]
},
{
"type": "PATTERN",
"value": "[\\dA-Fa-f_#]+"
}
]
}
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^'\\n]"
},
{
"type": "STRING",
"value": "''"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\n]"
},
{
"type": "STRING",
"value": "\"\""
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
"wstring_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[Ww][Ss][Tt][Rr][Ii][Nn][Gg]#"
},
{
"type": "PATTERN",
"value": "[Ss][Tt][Rr][Ii][Nn][Gg]#"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^'\\n]"
},
{
"type": "STRING",
"value": "''"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\n]"
},
{
"type": "STRING",
"value": "\"\""
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
]
}
]
}
},
"char_literal": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[^']"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[Ww][Cc][Hh][Aa][Rr]#"
},
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[^']"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "C#"
},
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[^']"
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
},
"line_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"block_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "(*"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^*]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "PATTERN",
"value": "[^)]"
}
]
}
]
}
},
{
"type": "STRING",
"value": "*)"
}
]
}
},
"c_style_comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "(/*"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^*]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "PATTERN",
"value": "[^)]"
}
]
}
]
}
},
{
"type": "STRING",
"value": "*/)"
}
]
}
},
"exit_statement": {
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Ee][Xx][Ii][Tt]"
}
},
"named": true,
"value": "keyword"
},
"continue_statement": {
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[Cc][Oo][Nn][Tt][Ii][Nn][Uu][Ee]"
}
},
"named": true,
"value": "keyword"
},
"bom": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": ""
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "SYMBOL",
"name": "c_style_comment"
}
],
"conflicts": [
[
"case_item"
],
[
"region_statement"
],
[
"case_statement"
],
[
"fb_call",
"function_call"
],
[
"fb_parameter",
"parameter"
],
[
"var_declaration",
"var_temp_declaration"
],
[
"var_declaration",
"var_constant_declaration"
],
[
"var_declaration",
"var_retain_declaration"
],
[
"var_declaration",
"var_non_retain_declaration"
],
[
"var_declaration",
"var_db_specific_declaration"
],
[
"type",
"struct_type"
],
[
"expression",
"struct_initializer"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}