{ "name": "dust", "word": "identifier", "rules": { "root": { "type": "PREC", "value": 1, "content": { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "statement" } } }, "_comment": { "type": "PATTERN", "value": "[#][^#\\n]*[#|\\n]" }, "statement": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "assignment" }, { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "for" }, { "type": "SYMBOL", "name": "if_else" }, { "type": "SYMBOL", "name": "index_assignment" }, { "type": "SYMBOL", "name": "match" }, { "type": "SYMBOL", "name": "return" }, { "type": "SYMBOL", "name": "while" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": ";" }, { "type": "BLANK" } ] } ] } }, "expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expression_kind" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "_expression_kind" }, { "type": "STRING", "value": ")" } ] } ] }, "_expression_kind": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "index" }, { "type": "SYMBOL", "name": "logic" }, { "type": "SYMBOL", "name": "math" }, { "type": "SYMBOL", "name": "value" }, { "type": "SYMBOL", "name": "yield" }, { "type": "SYMBOL", "name": "new" } ] } }, "_expression_list": { "type": "REPEAT1", "content": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } } }, "block": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "async" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "}" } ] }, "identifier": { "type": "PATTERN", "value": "[_a-zA-Z]+[_a-zA-Z0-9]*[_a-zA-Z]?" }, "value": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "function" }, { "type": "SYMBOL", "name": "integer" }, { "type": "SYMBOL", "name": "float" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "boolean" }, { "type": "SYMBOL", "name": "list" }, { "type": "SYMBOL", "name": "map" }, { "type": "SYMBOL", "name": "option" }, { "type": "SYMBOL", "name": "built_in_value" }, { "type": "SYMBOL", "name": "structure" } ] }, "structure": { "type": "SEQ", "members": [ { "type": "STRING", "value": "struct" }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "type_specification" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "statement" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "type_specification" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "statement" } ] } ] } }, { "type": "STRING", "value": "}" } ] }, "new": { "type": "SEQ", "members": [ { "type": "STRING", "value": "new" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "statement" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "type_specification" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "statement" } ] } ] } }, { "type": "STRING", "value": "}" } ] }, "integer": { "type": "TOKEN", "content": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] }, { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "1" }, { "type": "STRING", "value": "2" }, { "type": "STRING", "value": "3" }, { "type": "STRING", "value": "4" }, { "type": "STRING", "value": "5" }, { "type": "STRING", "value": "6" }, { "type": "STRING", "value": "7" }, { "type": "STRING", "value": "8" }, { "type": "STRING", "value": "9" }, { "type": "STRING", "value": "0" } ] } } ] } } }, "float": { "type": "TOKEN", "content": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] }, { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "1" }, { "type": "STRING", "value": "2" }, { "type": "STRING", "value": "3" }, { "type": "STRING", "value": "4" }, { "type": "STRING", "value": "5" }, { "type": "STRING", "value": "6" }, { "type": "STRING", "value": "7" }, { "type": "STRING", "value": "8" }, { "type": "STRING", "value": "9" }, { "type": "STRING", "value": "0" } ] } }, { "type": "STRING", "value": "." }, { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "1" }, { "type": "STRING", "value": "2" }, { "type": "STRING", "value": "3" }, { "type": "STRING", "value": "4" }, { "type": "STRING", "value": "5" }, { "type": "STRING", "value": "6" }, { "type": "STRING", "value": "7" }, { "type": "STRING", "value": "8" }, { "type": "STRING", "value": "9" }, { "type": "STRING", "value": "0" } ] } } ] } } }, "string": { "type": "PATTERN", "value": "(\"[^\"]*?\")|('[^']*?')|(`[^`]*?`)" }, "boolean": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "true" }, { "type": "STRING", "value": "false" } ] }, "list": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "REPEAT", "content": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } } }, { "type": "STRING", "value": "]" } ] }, "map": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT1", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_specification" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "statement" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } }, { "type": "STRING", "value": "}" } ] }, "option": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "none" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "some" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "expression" }, { "type": "STRING", "value": ")" } ] } ] }, "index": { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "index_expression" }, { "type": "STRING", "value": ":" }, { "type": "SYMBOL", "name": "index_expression" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": ".." }, { "type": "SYMBOL", "name": "expression" } ] }, { "type": "BLANK" } ] } ] } }, "index_expression": { "type": "PREC", "value": 1, "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "function_call" }, { "type": "STRING", "value": ")" } ] }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "index" }, { "type": "SYMBOL", "name": "value" } ] } }, "math": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "math_operator" }, { "type": "SYMBOL", "name": "expression" } ] } }, "math_operator": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "+" }, { "type": "STRING", "value": "-" }, { "type": "STRING", "value": "*" }, { "type": "STRING", "value": "/" }, { "type": "STRING", "value": "%" } ] }, "logic": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "logic_operator" }, { "type": "SYMBOL", "name": "expression" } ] } }, "logic_operator": { "type": "PREC_LEFT", "value": 0, "content": { "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": "<=" } ] } }, "assignment": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_specification" }, { "type": "BLANK" } ] }, { "type": "SYMBOL", "name": "assignment_operator" }, { "type": "SYMBOL", "name": "statement" } ] }, "index_assignment": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "index" }, { "type": "SYMBOL", "name": "assignment_operator" }, { "type": "SYMBOL", "name": "statement" } ] }, "assignment_operator": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "=" }, { "type": "STRING", "value": "+=" }, { "type": "STRING", "value": "-=" } ] } }, "if_else": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "if" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "else_if" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "else" }, { "type": "BLANK" } ] } ] } }, "if": { "type": "SEQ", "members": [ { "type": "STRING", "value": "if" }, { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "block" } ] }, "else_if": { "type": "SEQ", "members": [ { "type": "STRING", "value": "else if" }, { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "block" } ] }, "else": { "type": "SEQ", "members": [ { "type": "STRING", "value": "else" }, { "type": "SYMBOL", "name": "block" } ] }, "match": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "match" }, { "type": "SYMBOL", "name": "expression" }, { "type": "STRING", "value": "{" }, { "type": "REPEAT1", "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "STRING", "value": "*" } ] }, { "type": "STRING", "value": "=>" }, { "type": "SYMBOL", "name": "statement" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } }, { "type": "STRING", "value": "}" } ] } }, "while": { "type": "SEQ", "members": [ { "type": "STRING", "value": "while" }, { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "block" } ] }, "for": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "for" }, { "type": "STRING", "value": "async for" } ] }, { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "in" }, { "type": "SYMBOL", "name": "expression" }, { "type": "SYMBOL", "name": "block" } ] }, "return": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "return" }, { "type": "SYMBOL", "name": "statement" } ] } }, "type_specification": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": ">" } ] }, "type": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "any" }, { "type": "STRING", "value": "bool" }, { "type": "STRING", "value": "collection" }, { "type": "STRING", "value": "float" }, { "type": "STRING", "value": "int" }, { "type": "STRING", "value": "map" }, { "type": "STRING", "value": "none" }, { "type": "STRING", "value": "num" }, { "type": "STRING", "value": "str" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": "]" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "type" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } }, { "type": "STRING", "value": ")" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "->" }, { "type": "SYMBOL", "name": "type" } ] }, { "type": "BLANK" } ] } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "option" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": ")" } ] } ] } }, "function": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "type_specification" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } }, { "type": "STRING", "value": ")" }, { "type": "SYMBOL", "name": "type_specification" }, { "type": "SYMBOL", "name": "block" } ] }, "function_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_function_expression_kind" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "_function_expression_kind" }, { "type": "STRING", "value": ")" } ] } ] }, "_function_expression_kind": { "type": "PREC", "value": 2, "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "index" }, { "type": "SYMBOL", "name": "value" }, { "type": "SYMBOL", "name": "yield" } ] } }, "function_call": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "function_expression" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expression_list" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] } }, "yield": { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "expression" }, { "type": "STRING", "value": "->" }, { "type": "SYMBOL", "name": "function_expression" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "_expression_list" }, { "type": "STRING", "value": ")" } ] }, { "type": "BLANK" } ] } ] } }, "built_in_value": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "args" }, { "type": "STRING", "value": "assert_equal" }, { "type": "STRING", "value": "env" }, { "type": "STRING", "value": "fs" }, { "type": "STRING", "value": "json" }, { "type": "STRING", "value": "length" }, { "type": "STRING", "value": "output" }, { "type": "STRING", "value": "random" }, { "type": "STRING", "value": "string" } ] } }, "extras": [ { "type": "PATTERN", "value": "\\s" }, { "type": "SYMBOL", "name": "_comment" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }