{ "name": "tiger", "word": "identifier", "rules": { "source_file": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expr" } ] }, "_expr": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "nil_literal" }, { "type": "SYMBOL", "name": "integer_literal" }, { "type": "SYMBOL", "name": "string_literal" }, { "type": "SYMBOL", "name": "array_expression" }, { "type": "SYMBOL", "name": "record_expression" }, { "type": "SYMBOL", "name": "_lvalue" }, { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "unary_expression" }, { "type": "SYMBOL", "name": "binary_expression" }, { "type": "SYMBOL", "name": "sequence_expression" } ] }, "nil_literal": { "type": "STRING", "value": "nil" }, "integer_literal": { "type": "PATTERN", "value": "[0-9]+" }, "string_literal": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "escape_sequence" }, { "type": "PATTERN", "value": "[^\"\\\\]+" } ] } }, { "type": "STRING", "value": "\"" } ] }, "identifier": { "type": "PATTERN", "value": "[_a-zA-Z0-9]+" }, "escape_sequence": { "type": "IMMEDIATE_TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\\" }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "a" }, { "type": "STRING", "value": "b" }, { "type": "STRING", "value": "f" }, { "type": "STRING", "value": "n" }, { "type": "STRING", "value": "r" }, { "type": "STRING", "value": "t" }, { "type": "STRING", "value": "v" } ] }, { "type": "PATTERN", "value": "[0-3][0-7]{2}" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "x" }, { "type": "PATTERN", "value": "[0-9a-fA-F]{2}" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "\\" }, { "type": "STRING", "value": "\"" } ] } ] } ] } }, "_lvalue": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "record_value" }, { "type": "SYMBOL", "name": "array_value" } ] }, "record_value": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "record", "content": { "type": "SYMBOL", "name": "_lvalue" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "identifier" } } ] }, "array_value": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "array", "content": { "type": "SYMBOL", "name": "_lvalue" } }, { "type": "STRING", "value": "[" }, { "type": "FIELD", "name": "index", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "STRING", "value": "]" } ] }, "function_call": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "function", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "(" }, { "type": "FIELD", "name": "arguments", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expr" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_expr" } ] } } ] }, { "type": "BLANK" } ] } }, { "type": "STRING", "value": ")" } ] }, "unary_expression": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "STRING", "value": "-" }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "expression", "content": { "type": "SYMBOL", "name": "_expr" } } ] }, "binary_expression": { "type": "CHOICE", "members": [ { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "*" }, { "type": "STRING", "value": "/" } ] }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "+" }, { "type": "STRING", "value": "-" } ] }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, { "type": "PREC_LEFT", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": ">=" }, { "type": "STRING", "value": "<=" }, { "type": "STRING", "value": "=" }, { "type": "STRING", "value": "<>" }, { "type": "STRING", "value": "<" }, { "type": "STRING", "value": ">" } ] }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, { "type": "PREC_LEFT", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "STRING", "value": "&" }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "STRING", "value": "|" }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } } ] }, "sequence_expression": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expr" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": ";" }, { "type": "SYMBOL", "name": "_expr" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "array_expression": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "[" }, { "type": "FIELD", "name": "size", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "STRING", "value": "]" }, { "type": "STRING", "value": "of" }, { "type": "FIELD", "name": "init", "content": { "type": "SYMBOL", "name": "_expr" } } ] }, "record_expression": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "init", "content": { "type": "SYMBOL", "name": "_expr" } } ] }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "init", "content": { "type": "SYMBOL", "name": "_expr" } } ] } ] } } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] } }, "extras": [ { "type": "PATTERN", "value": "\\s" } ], "conflicts": [ [ "_lvalue", "array_expression" ] ], "precedences": [], "externals": [], "inline": [], "supertypes": [] }