UNPKG

tree-sitter-tablegen

Version:
2,253 lines (2,252 loc) 53.4 kB
{ "name": "tablegen", "word": "identifier", "rules": { "tablegen_file": { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "statement" }, { "type": "SYMBOL", "name": "preprocessor_directive" } ] } }, "include_directive": { "type": "SEQ", "members": [ { "type": "STRING", "value": "include" }, { "type": "SYMBOL", "name": "string" } ] }, "preprocessor_directive": { "type": "TOKEN", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "#define" }, { "type": "STRING", "value": "#ifdef" }, { "type": "STRING", "value": "#ifndef" } ] }, { "type": "PATTERN", "value": "\\s+" }, { "type": "FIELD", "name": "macro_name", "content": { "type": "PATTERN", "value": "[a-zA-Z_][a-zA-Z_0-9]*" } } ] }, { "type": "STRING", "value": "#else" }, { "type": "STRING", "value": "#endif" } ] } }, "statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "assert" }, { "type": "SYMBOL", "name": "class" }, { "type": "SYMBOL", "name": "def" }, { "type": "SYMBOL", "name": "defm" }, { "type": "SYMBOL", "name": "defset" }, { "type": "SYMBOL", "name": "defvar" }, { "type": "SYMBOL", "name": "foreach" }, { "type": "SYMBOL", "name": "if" }, { "type": "SYMBOL", "name": "let" }, { "type": "SYMBOL", "name": "multiclass" }, { "type": "SYMBOL", "name": "include_directive" } ] }, "block": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "statement" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "}" } ] } ] }, "class": { "type": "SEQ", "members": [ { "type": "STRING", "value": "class" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "template_args" }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "record_body" } } ] }, "template_args": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "template_arg" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "template_arg" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ">" } ] }, "template_arg": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "type" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" } ] }, { "type": "BLANK" } ] } ] }, "record_body": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "parent_class_list" }, { "type": "BLANK" } ] }, { "type": "SYMBOL", "name": "body" } ] }, "parent_class_list": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "value" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ">" } ] }, { "type": "BLANK" } ] } ] }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "value" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ">" } ] }, { "type": "BLANK" } ] } ] } ] } } ] } ] }, "body": { "type": "CHOICE", "members": [ { "type": "STRING", "value": ";" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "body_item" } }, { "type": "STRING", "value": "}" } ] } ] }, "body_item": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "instruction" }, { "type": "SYMBOL", "name": "let_instruction" }, { "type": "SYMBOL", "name": "def_var" }, { "type": "SYMBOL", "name": "assert" } ] }, "instruction": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "field" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": "code" } ] }, { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ";" } ] }, "let_instruction": { "type": "SEQ", "members": [ { "type": "STRING", "value": "let" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "range_list" }, { "type": "STRING", "value": "}" } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": ";" } ] }, "def_var": { "type": "SEQ", "members": [ { "type": "STRING", "value": "defvar" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": ";" } ] }, "def": { "type": "SEQ", "members": [ { "type": "STRING", "value": "def" }, { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "BLANK" } ] } }, { "type": "SYMBOL", "name": "record_body" } ] }, "let": { "type": "SEQ", "members": [ { "type": "STRING", "value": "let" }, { "type": "SYMBOL", "name": "let_list" }, { "type": "STRING", "value": "in" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "statement" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "}" } ] } ] } ] }, "let_list": { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "let_item" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "let_item" } ] } } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "let_item": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "range_list" }, { "type": "STRING", "value": ">" } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" } ] }, "multiclass": { "type": "SEQ", "members": [ { "type": "STRING", "value": "multiclass" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "template_args" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "parent_class_list" }, { "type": "BLANK" } ] }, { "type": "SYMBOL", "name": "multiclass_body" } ] }, "multiclass_body": { "type": "CHOICE", "members": [ { "type": "STRING", "value": ";" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "multiclass_statement" } }, { "type": "STRING", "value": "}" } ] } ] }, "multiclass_statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "assert" }, { "type": "SYMBOL", "name": "def" }, { "type": "SYMBOL", "name": "defm" }, { "type": "SYMBOL", "name": "defvar" }, { "type": "SYMBOL", "name": "foreach" }, { "type": "SYMBOL", "name": "if" }, { "type": "SYMBOL", "name": "let" } ] }, "defm": { "type": "SEQ", "members": [ { "type": "STRING", "value": "defm" }, { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "BLANK" } ] } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "parent_class_list" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ";" } ] }, "defset": { "type": "SEQ", "members": [ { "type": "STRING", "value": "defset" }, { "type": "SYMBOL", "name": "type" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "=" }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "}" } ] }, "defvar": { "type": "SEQ", "members": [ { "type": "STRING", "value": "defvar" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": ";" } ] }, "foreach": { "type": "SEQ", "members": [ { "type": "STRING", "value": "foreach" }, { "type": "SYMBOL", "name": "foreach_iterator" }, { "type": "STRING", "value": "in" }, { "type": "SYMBOL", "name": "block" } ] }, "foreach_iterator": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "range_list" }, { "type": "STRING", "value": "}" } ] }, { "type": "SYMBOL", "name": "range_piece" }, { "type": "SYMBOL", "name": "value" } ] } ] }, "if": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "if" }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": "then" }, { "type": "SYMBOL", "name": "block" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "else" }, { "type": "SYMBOL", "name": "block" } ] }, { "type": "BLANK" } ] } ] } }, "assert": { "type": "SEQ", "members": [ { "type": "STRING", "value": "assert" }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": ";" } ] }, "type": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "primitive_type" }, { "type": "SYMBOL", "name": "bits_type" }, { "type": "SYMBOL", "name": "list_type" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "identifier" }, "named": true, "value": "class_identifier" } ] }, "primitive_type": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "bit" }, { "type": "STRING", "value": "int" }, { "type": "STRING", "value": "string" }, { "type": "STRING", "value": "dag" } ] }, "bits_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "bits" }, { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "integer" }, { "type": "STRING", "value": ">" } ] }, "list_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "list" }, { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": ">" } ] }, "value": { "type": "PREC_LEFT", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "simple_value" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "value_suffix" } } ] }, { "type": "SYMBOL", "name": "paste_value" } ] } }, "paste_value": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": "#" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "BLANK" } ] } ] } }, "value_suffix": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "range_list" }, { "type": "STRING", "value": "}" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "range_list" }, { "type": "STRING", "value": "]" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "." }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, "value_list": { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "value" } ] } } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "range_list": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "range_piece" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "range_piece" } ] } } ] }, "range_piece": { "type": "PREC", "value": 1, "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": "..." }, { "type": "SYMBOL", "name": "value" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": "-" }, { "type": "SYMBOL", "name": "value" } ] }, { "type": "SYMBOL", "name": "value" } ] } }, "simple_value": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "integer" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "concatenated_string" }, { "type": "SYMBOL", "name": "code" }, { "type": "SYMBOL", "name": "boolean" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "?" }, "named": true, "value": "uninitialized_value" }, { "type": "SYMBOL", "name": "sequence" }, { "type": "SYMBOL", "name": "list_initializer" }, { "type": "SYMBOL", "name": "dag_initializer" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "anonymous_record" }, { "type": "SYMBOL", "name": "operator" } ] } }, "sequence": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "value_list" }, { "type": "STRING", "value": "}" } ] }, "list_initializer": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "value_list" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "]" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": ">" } ] }, { "type": "BLANK" } ] } ] }, "dag_initializer": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "dag_arg" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "dag_arg_list" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "dag_arg_list": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "dag_arg" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] }, { "type": "SYMBOL", "name": "dag_arg" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "dag_arg": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "SYMBOL", "name": "var" } ] }, { "type": "BLANK" } ] } ] }, { "type": "SYMBOL", "name": "var" } ] }, "anonymous_record": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "<" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "value" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ">" } ] }, "concatenated_string": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "string" } } ] } }, "operator": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "bang_operator" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "SYMBOL", "name": "type" }, { "type": "STRING", "value": ">" } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "value_list" }, { "type": "STRING", "value": ")" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "cond_operator" }, { "type": "STRING", "value": "(" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "cond_clause" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "cond_clause" } ] } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ")" } ] } ] }, "cond_clause": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "value" }, { "type": "STRING", "value": ":" }, { "type": "SYMBOL", "name": "value" } ] }, "bang_operator": { "type": "SEQ", "members": [ { "type": "STRING", "value": "!" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "add" }, { "type": "STRING", "value": "and" }, { "type": "STRING", "value": "cast" }, { "type": "STRING", "value": "con" }, { "type": "STRING", "value": "dag" }, { "type": "STRING", "value": "div" }, { "type": "STRING", "value": "empty" }, { "type": "STRING", "value": "eq" }, { "type": "STRING", "value": "exists" }, { "type": "STRING", "value": "filter" }, { "type": "STRING", "value": "find" }, { "type": "STRING", "value": "foldl" }, { "type": "STRING", "value": "foreach" }, { "type": "STRING", "value": "ge" }, { "type": "STRING", "value": "getop" }, { "type": "STRING", "value": "getdagop" }, { "type": "STRING", "value": "gt" }, { "type": "STRING", "value": "head" }, { "type": "STRING", "value": "if" }, { "type": "STRING", "value": "interleave" }, { "type": "STRING", "value": "isa" }, { "type": "STRING", "value": "le" }, { "type": "STRING", "value": "listconcat" }, { "type": "STRING", "value": "listremove" }, { "type": "STRING", "value": "listsplat" }, { "type": "STRING", "value": "logtwo" }, { "type": "STRING", "value": "lt" }, { "type": "STRING", "value": "mul" }, { "type": "STRING", "value": "ne" }, { "type": "STRING", "value": "not" }, { "type": "STRING", "value": "or" }, { "type": "STRING", "value": "setop" }, { "type": "STRING", "value": "setdagop" }, { "type": "STRING", "value": "shl" }, { "type": "STRING", "value": "size" }, { "type": "STRING", "value": "sra" }, { "type": "STRING", "value": "srl" }, { "type": "STRING", "value": "strconcat" }, { "type": "STRING", "value": "sub" }, { "type": "STRING", "value": "subst" }, { "type": "STRING", "value": "substr" }, { "type": "STRING", "value": "tail" }, { "type": "STRING", "value": "tolower" }, { "type": "STRING", "value": "toupper" }, { "type": "STRING", "value": "xor" } ] } ] }, "cond_operator": { "type": "SEQ", "members": [ { "type": "STRING", "value": "!" }, { "type": "STRING", "value": "cond" } ] }, "integer": { "type": "TOKEN", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[+-]?\\d+" }, { "type": "PATTERN", "value": "0x[\\da-fA-F]+" }, { "type": "PATTERN", "value": "0b[01]+" } ] } }, "string": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string_content" }, { "type": "SYMBOL", "name": "_escape_sequence" } ] } }, { "type": "STRING", "value": "\"" } ] }, "string_content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PREC", "value": 1, "content": { "type": "PATTERN", "value": "[^\"\\\\]+" } } }, "_escape_sequence": { "type": "CHOICE", "members": [ { "type": "PREC", "value": 2, "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\\" }, { "type": "PATTERN", "value": "[^abfnrtvxu'\\\"\\\\\\?]" } ] } } }, { "type": "PREC", "value": 1, "content": { "type": "SYMBOL",