{ "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "scl", "rules": { "source_file": { "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" } ] } }, "type_definition": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TYPE" }, "named": true, "value": "keyword" }, { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TITLE" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute_list" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VERSION" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": ":" }, { "type": "SYMBOL", "name": "number" } ] }, { "type": "BLANK" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "STRUCT" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_STRUCT" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_TYPE" }, "named": true, "value": "keyword" } ] }, "data_block": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "DATA_BLOCK" }, "named": true, "value": "keyword" }, { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TITLE" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute_list" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VERSION" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": ":" }, { "type": "SYMBOL", "name": "number" } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "NON_RETAIN" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_declaration" }, { "type": "BLANK" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "BEGIN" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_DATA_BLOCK" }, "named": true, "value": "keyword" } ] }, "organization_block": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "ORGANIZATION_BLOCK" }, "named": true, "value": "keyword" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "string" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TITLE" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute_list" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VERSION" }, "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": "STRING", "value": "BEGIN" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_ORGANIZATION_BLOCK" }, "named": true, "value": "keyword" } ] }, "function_block": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "FUNCTION_BLOCK" }, "named": true, "value": "keyword" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "string" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TITLE" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute_list" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VERSION" }, "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": "STRING", "value": "BEGIN" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_FUNCTION_BLOCK" }, "named": true, "value": "keyword" } ] }, "function": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "FUNCTION" }, "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": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "TITLE" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute_list" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VERSION" }, "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": "STRING", "value": "BEGIN" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_FUNCTION" }, "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": "STRING", "value": "TRUE" }, "named": true, "value": "constant" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "FALSE" }, "named": true, "value": "constant" }, { "type": "SYMBOL", "name": "identifier" } ] }, "var_declaration": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_INPUT" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_OUTPUT" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_IN_OUT" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_TEMP" }, "named": true, "value": "keyword" }, { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "CONSTANT" }, "named": true, "value": "keyword" } ] }, { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "NON_RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_CONSTANT" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_RETAIN" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_NON_RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_VAR" }, "named": true, "value": "keyword" } ] }, "var_temp_declaration": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_TEMP" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_VAR" }, "named": true, "value": "keyword" } ] }, "var_constant_declaration": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "CONSTANT" }, "named": true, "value": "keyword" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_CONSTANT" }, "named": true, "value": "keyword" } ] }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_VAR" }, "named": true, "value": "keyword" } ] }, "var_retain_declaration": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_VAR" }, "named": true, "value": "keyword" } ] }, "var_non_retain_declaration": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR" }, "named": true, "value": "keyword" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "NON_RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "VAR_NON_RETAIN" }, "named": true, "value": "keyword" } ] }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "var_item" }, { "type": "SYMBOL", "name": "block_comment" } ] } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_VAR" }, "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": "SYMBOL", "name": "expression" } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ";" } ] }, "type": { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "BOOL" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Bool" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "INT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Int" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "int" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DINT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DInt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "dint" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "SINT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "SInt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "sint" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "USINT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "USInt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "usint" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "UINT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "UInt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "uint" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WORD" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Word" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "word" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DWORD" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DWord" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "dword" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "BYTE" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Byte" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "byte" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "REAL" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Real" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "real" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "LREAL" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "LReal" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "lreal" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "TIME" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Time" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "time" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "TOD" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Tod" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "tod" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DT" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Dt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "dt" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "String" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "STRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "string" }, "named": true, "value": "type_builtin" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "String" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "STRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "string" }, "named": true, "value": "type_builtin" } ] }, { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "number" }, { "type": "STRING", "value": "]" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WString" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WSTRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "wstring" }, "named": true, "value": "type_builtin" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "WString" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WSTRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "wstring" }, "named": true, "value": "type_builtin" } ] }, { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "number" }, { "type": "STRING", "value": "]" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "Char" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "CHAR" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "char" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WChar" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WCHAR" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "wchar" }, "named": true, "value": "type_builtin" }, { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "ARRAY" }, "named": true, "value": "keyword" }, { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "number" }, { "type": "STRING", "value": ".." }, { "type": "SYMBOL", "name": "number" }, { "type": "STRING", "value": "]" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "OF" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "type" } ] }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "string" } ] }, "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": "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" } ] }, "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": "SEQ", "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": "STRING", "value": ":=" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "expression" } }, { "type": "STRING", "value": ";" } ] }, "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" } ] }, "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": "]" } ] }, "if_statement": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "IF" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "THEN" }, "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": "STRING", "value": "END_IF" }, "named": true, "value": "keyword" } ] }, "elsif_clause": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "ELSIF" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "THEN" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } } ] }, "else_clause": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "ELSE" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } } ] }, "case_statement": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "CASE" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "OF" }, "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": "STRING", "value": "END_CASE" }, "named": true, "value": "keyword" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": ";" }, { "type": "BLANK" } ] } ] }, "case_item": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "prefixed_identifier" }, { "type": "SYMBOL", "name": "range" } ] }, { "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": "STRING", "value": "FOR" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": ":=" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "TO" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "BY" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" } ] }, { "type": "BLANK" } ] }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DO" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_FOR" }, "named": true, "value": "keyword" } ] }, "while_statement": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "WHILE" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "DO" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_WHILE" }, "named": true, "value": "keyword" } ] }, "repeat_statement": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "REPEAT" }, "named": true, "value": "keyword" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "UNTIL" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "expression" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_REPEAT" }, "named": true, "value": "keyword" } ] }, "region_statement": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "REGION" }, "named": true, "value": "keyword" }, { "type": "SYMBOL", "name": "region_name" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "ALIAS", "content": { "type": "STRING", "value": "END_REGION" }, "named": true, "value": "keyword" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "region_name" }, { "type": "BLANK" } ] } ] }, "region_name": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "string" }, { "type": "STRING", "value": "/" }, { "type": "STRING", "value": "-" } ] } }, "function_call": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "string" } ] }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "parameter_list" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "=>" }, { "type": "SYMBOL", "name": "identifier" } ] }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "parameter_list": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "parameter" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "parameter" } ] } } ] }, "parameter": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": ":=" }, { "type": "SYMBOL", "name": "expression" } ] }, "expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "hex_number" }, { "type": "SYMBOL", "name": "time_value" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "prefixed_identifier" }, { "type": "SYMBOL", "name": "field_access" }, { "type": "SYMBOL", "name": "array_access" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "unary_expression" }, { "type": "SYMBOL", "name": "binary_expression" }, { "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": "STRING", "value": "NOT" }, "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": "STRING", "value": "OR" }, "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": "STRING", "value": "XOR" }, "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": "STRING", "value": "AND" }, "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": "STRING", "value": "MOD" }, "named": true, "value": "operator" } ] }, { "type": "SYMBOL", "name": "expression" } ] } } ] }, "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_]+" } ] } }, "time_value": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "T#" }, { "type": "PATTERN", "value": "\\d+(_?\\d)*(ms|s|min|h)" } ] } }, "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": "\"" } ] } ] }, "string_type": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "STRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "String" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "string" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WSTRING" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "WString" }, "named": true, "value": "type_builtin" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "wstring" }, "named": true, "value": "type_builtin" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "number" }, { "type": "STRING", "value": "]" } ] }, { "type": "BLANK" } ] } ] }, "char_literal": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "'" }, { "type": "PATTERN", "value": "[^']" }, { "type": "STRING", "value": "'" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "WCHAR#" }, { "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": "STRING", "value": "EXIT" }, "named": true, "value": "keyword" }, "continue_statement": { "type": "ALIAS", "content": { "type": "STRING", "value": "CONTINUE" }, "named": true, "value": "keyword" } }, "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" ], [ "region_name" ], [ "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" ] ], "precedences": [], "externals": [], "inline": [], "supertypes": [], "reserved": {} }