tree-sitter-mips
Version:
A syntax parser for the MIPS Instruction Set Architecture.
1,976 lines (1,975 loc) • 46.5 kB
JSON
{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "mips",
"rules": {
"program": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "directive"
},
{
"type": "SYMBOL",
"name": "instruction"
},
{
"type": "SYMBOL",
"name": "_label"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "BLANK"
}
]
}
]
},
"_statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": "\r"
},
{
"type": "STRING",
"value": "\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "directive"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_line_separator"
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "instruction"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\r"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\n"
}
]
}
]
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_label"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\r"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\n"
}
]
}
]
}
},
"comment": {
"type": "PATTERN",
"value": "#.*"
},
"_whitespace": {
"type": "PATTERN",
"value": "[ \\t]+"
},
"_directive_operand_separator": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]+"
},
{
"type": "PATTERN",
"value": "[ \\t]*,[ \\t]*"
}
]
},
"directive": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_macro_directive"
},
{
"type": "SYMBOL",
"name": "_integer_directive"
},
{
"type": "SYMBOL",
"name": "_float_directive"
},
{
"type": "SYMBOL",
"name": "_string_directive"
},
{
"type": "SYMBOL",
"name": "_control_directive"
}
]
}
]
},
"_macro_directive": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mnemonic",
"content": {
"type": "SYMBOL",
"name": "macro_mnemonic"
}
},
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "symbol"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "macro_parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "macro_parameters"
}
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"macro_mnemonic": {
"type": "STRING",
"value": ".macro"
},
"macro_parameters": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_macro_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ","
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_macro_parameter"
}
]
}
}
]
},
"_macro_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "macro_variable"
},
{
"type": "SYMBOL",
"name": "symbol"
}
]
},
"_integer_directive": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mnemonic",
"content": {
"type": "SYMBOL",
"name": "integer_mnemonic"
}
},
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "operands",
"content": {
"type": "SYMBOL",
"name": "integer_operands"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\r"
},
{
"type": "STRING",
"value": "\n"
},
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
},
"integer_mnemonic": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".word"
},
{
"type": "STRING",
"value": ".half"
},
{
"type": "STRING",
"value": ".hword"
},
{
"type": "STRING",
"value": ".byte"
},
{
"type": "STRING",
"value": ".dword"
}
]
},
"integer_operands": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
},
{
"type": "PATTERN",
"value": "[ \\t]*,[ \\t]*"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_data_separator"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_data_separator"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_float_directive": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mnemonic",
"content": {
"type": "SYMBOL",
"name": "float_mnemonic"
}
},
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "operands",
"content": {
"type": "SYMBOL",
"name": "float_operands"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\r"
},
{
"type": "STRING",
"value": "\n"
},
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
},
"float_mnemonic": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".float"
},
{
"type": "STRING",
"value": ".double"
}
]
},
"float_operands": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
},
{
"type": "PATTERN",
"value": "[ \\t]*,[ \\t]*"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "STRING",
"value": "\t"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_data_separator"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "float"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_data_separator"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_float_operand": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "macro_variable"
}
]
},
"_string_directive": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mnemonic",
"content": {
"type": "SYMBOL",
"name": "string_mnemonic"
}
},
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "string",
"content": {
"type": "SYMBOL",
"name": "_string_operand"
}
},
{
"type": "PATTERN",
"value": "[ \\t]*"
}
]
},
"string_mnemonic": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".ascii"
},
{
"type": "STRING",
"value": ".asciiz"
},
{
"type": "STRING",
"value": ".string"
}
]
},
"_string_operand": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "macro_variable"
}
]
},
"_control_directive": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "mnemonic",
"content": {
"type": "SYMBOL",
"name": "control_mnemonic"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_whitespace"
},
{
"type": "FIELD",
"name": "operands",
"content": {
"type": "SYMBOL",
"name": "control_operands"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_directive_operand_separator"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "PATTERN",
"value": "[ \\t]+"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"control_mnemonic": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "\\.[a-z_]+"
}
},
"control_operands": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_control_operand"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_directive_operand_separator"
},
{
"type": "SYMBOL",
"name": "_control_operand"
}
]
}
}
]
},
"_control_operand": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
"instruction": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "opcode",
"content": {
"type": "SYMBOL",
"name": "opcode"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call_expression"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]+"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "operands",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "operands"
},
{
"type": "SYMBOL",
"name": "_call_expression"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"opcode": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_.]*"
}
}
},
"operands": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_operand"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_operand_separator"
}
]
},
{
"type": "SYMBOL",
"name": "_operand"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_operand_separator"
},
{
"type": "BLANK"
}
]
}
]
},
"_operand": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "address"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "modulo"
}
]
},
"_call_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "operands"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"modulo": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "STRING",
"value": "%"
}
}
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "macro_variable"
},
{
"type": "SYMBOL",
"name": "register"
},
{
"type": "SYMBOL",
"name": "symbol"
},
{
"type": "SYMBOL",
"name": "char"
},
{
"type": "SYMBOL",
"name": "octal"
},
{
"type": "SYMBOL",
"name": "decimal"
},
{
"type": "SYMBOL",
"name": "hexadecimal"
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "&"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "=="
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "!="
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "<<"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": ">>"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_expression"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_right_expression"
}
]
}
}
]
},
"_left_expression": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_operator_separator"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_right_expression": {
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression_argument"
},
{
"type": "STRING",
"value": ")"
}
]
},
"unary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_expression_argument"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "SYMBOL",
"name": "_expression_argument"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "_expression_argument"
}
]
}
}
]
},
"_expression_argument": {
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
"char": {
"type": "PATTERN",
"value": "'(?:\\\\.|[^'\\\\])'"
},
"string": {
"type": "PATTERN",
"value": "\"(?:\\\\.|[^\"\\\\])*\""
},
"octal": {
"type": "PATTERN",
"value": "-?0[0-7]*"
},
"decimal": {
"type": "PATTERN",
"value": "-?\\d+"
},
"hexadecimal": {
"type": "PATTERN",
"value": "-?0[xX][0-9a-fA-F]+"
},
"float": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "-?\\d+\\.?\\d*"
},
{
"type": "PATTERN",
"value": "-?\\d*\\.\\d+"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[eE][+-]?\\d+"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "PATTERN",
"value": "-?\\d+[eE][+-]?\\d+"
}
]
}
},
"register": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "$"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "zero"
},
{
"type": "STRING",
"value": "at"
},
{
"type": "STRING",
"value": "gp"
},
{
"type": "STRING",
"value": "sp"
},
{
"type": "STRING",
"value": "fp"
},
{
"type": "STRING",
"value": "ra"
},
{
"type": "PATTERN",
"value": "[vk][01]"
},
{
"type": "PATTERN",
"value": "[ac][0-3]"
},
{
"type": "PATTERN",
"value": "t[0-9]"
},
{
"type": "PATTERN",
"value": "s[0-8]"
},
{
"type": "PATTERN",
"value": "f?([12]?[0-9]|3[0-1])"
}
]
}
]
}
},
"macro_variable": {
"type": "PATTERN",
"value": "[%$\\\\][0-9a-zA-Z_:$%\\\\]+"
},
"symbol": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
},
"_label": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "label"
},
{
"type": "PATTERN",
"value": "[ \\t]*"
}
]
},
"label": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*:"
}
}
},
"address": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "offset",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "base",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "register"
},
{
"type": "SYMBOL",
"name": "macro_variable"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "[ \\t\\r]"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [
[
"macro_parameters"
],
[
"control_operands"
],
[
"integer_operands"
],
[
"float_operands"
],
[
"_operand",
"_expression_argument"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_operand_separator"
},
{
"type": "SYMBOL",
"name": "_operator_separator"
},
{
"type": "SYMBOL",
"name": "_line_separator"
},
{
"type": "SYMBOL",
"name": "_data_separator"
}
],
"inline": [],
"supertypes": []
}