{ "name": "zanscript", "word": "identifier", "rules": { "translation_unit": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_top_level_item" } }, "_top_level_item": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_directive" }, { "type": "SYMBOL", "name": "_command" }, { "type": "SYMBOL", "name": "_statement" } ] }, "_directive": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "define" }, { "type": "SYMBOL", "name": "include" } ] }, "define": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "DEFINE" }, { "type": "STRING", "value": "define" }, { "type": "STRING", "value": "Define" } ] }, { "type": "SYMBOL", "name": "match" }, { "type": "SYMBOL", "name": "match" } ] }, "include": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "INCLUDE" }, { "type": "STRING", "value": "include" }, { "type": "STRING", "value": "Include" } ] }, { "type": "SYMBOL", "name": "identifier" } ] }, "_command": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "action" }, { "type": "SYMBOL", "name": "_control" } ] }, "action": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "ACTION" }, { "type": "STRING", "value": "action" }, { "type": "STRING", "value": "Action" } ] }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "SYMBOL", "name": "block" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "COMPLETE" }, { "type": "STRING", "value": "complete" }, { "type": "STRING", "value": "Complete" } ] } ] }, "_control": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "branch" }, { "type": "SYMBOL", "name": "loop" } ] }, "branch": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "IF" }, { "type": "STRING", "value": "if" }, { "type": "STRING", "value": "If" } ] }, { "type": "SYMBOL", "name": "comparison" }, { "type": "SYMBOL", "name": "block" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "ELSE" }, { "type": "STRING", "value": "else" }, { "type": "STRING", "value": "Else" } ] }, { "type": "SYMBOL", "name": "block" } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "ENDIF" }, { "type": "STRING", "value": "endif" }, { "type": "STRING", "value": "Endif" }, { "type": "STRING", "value": "EndIf" } ] } ] }, "loop": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "WHILE" }, { "type": "STRING", "value": "while" }, { "type": "STRING", "value": "While" } ] }, { "type": "SYMBOL", "name": "comparison" }, { "type": "SYMBOL", "name": "block" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "ENDWHILE" }, { "type": "STRING", "value": "endwhile" }, { "type": "STRING", "value": "Endwhile" } ] } ] }, "comparison": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_argument" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "<" }, { "type": "STRING", "value": ">" }, { "type": "STRING", "value": "=" } ] }, { "type": "SYMBOL", "name": "_argument" } ] }, "block": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_statement" }, { "type": "SYMBOL", "name": "_command" } ] } }, "_statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "function" }, { "type": "SYMBOL", "name": "assignment" }, { "type": "SYMBOL", "name": "comment" } ] }, "function": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_argument" }, { "type": "STRING", "value": "," } ] } }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_argument" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "_argument": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "variable" } ] }, "assignment": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "variable" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "_expression" } ] }, "_expression": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_argument" }, { "type": "CHOICE", "members": [ { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "+" }, { "type": "STRING", "value": "-" }, { "type": "STRING", "value": "*" }, { "type": "STRING", "value": "/" } ] }, { "type": "SYMBOL", "name": "_argument" } ] } }, { "type": "BLANK" } ] } ] }, "comment": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "PATTERN", "value": ".*" } ] }, "variable": { "type": "PATTERN", "value": "@[a-zA-Z0-9_]+" }, "match": { "type": "PATTERN", "value": "[a-zA-Z0-9_.]+" }, "identifier": { "type": "PATTERN", "value": "[a-zA-Z_][a-zA-Z0-9_]*" }, "number": { "type": "PATTERN", "value": "\\d+(\\.\\d+)?" }, "string": { "type": "PATTERN", "value": "['\"].*['\"]" } }, "extras": [ { "type": "PATTERN", "value": "\\s" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }