{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "solidity",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_source_unit"
          }
        }
      ]
    },
    "_source_unit": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_directive"
        },
        {
          "type": "SYMBOL",
          "name": "_declaration"
        }
      ]
    },
    "_directive": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pragma_directive"
        },
        {
          "type": "SYMBOL",
          "name": "import_directive"
        }
      ]
    },
    "pragma_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "pragma"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "solidity_pragma_token"
            },
            {
              "type": "SYMBOL",
              "name": "any_pragma_token"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "solidity_pragma_token": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_solidity"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "version_constraint",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_pragma_version_constraint"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "||"
                        },
                        {
                          "type": "STRING",
                          "value": "-"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    },
    "any_pragma_token": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "pragma_value"
        }
      ]
    },
    "_solidity": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "STRING",
        "value": "solidity"
      }
    },
    "pragma_value": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "PATTERN",
        "value": "[^;]+"
      }
    },
    "_pragma_version_constraint": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "solidity_version_comparison_operator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "solidity_version"
        }
      ]
    },
    "solidity_version": {
      "type": "PATTERN",
      "value": "\"?\\.? ?(\\d|\\*)+(\\. ?(\\d|\\*)+ ?(\\.(\\d|\\*)+)?)?\"?"
    },
    "solidity_version_comparison_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": "^"
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": ">="
        },
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "STRING",
          "value": "="
        }
      ]
    },
    "import_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_source_import"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_import_clause"
                },
                {
                  "type": "SYMBOL",
                  "name": "_from_clause"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "_source_import": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "source",
          "content": {
            "type": "SYMBOL",
            "name": "string"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_import_alias"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_import_clause": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_single_import"
        },
        {
          "type": "SYMBOL",
          "name": "_multiple_import"
        }
      ]
    },
    "_from_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "from"
        },
        {
          "type": "FIELD",
          "name": "source",
          "content": {
            "type": "SYMBOL",
            "name": "string"
          }
        }
      ]
    },
    "_single_import": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "FIELD",
              "name": "import_name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_import_alias"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_multiple_import": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_import_declaration"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_import_declaration"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_import_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "import_name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_import_alias"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_import_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "FIELD",
          "name": "alias",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "contract_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "interface_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "error_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "library_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "struct_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "constant_variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_type_definition"
        },
        {
          "type": "SYMBOL",
          "name": "event_definition"
        },
        {
          "type": "SYMBOL",
          "name": "using_directive"
        }
      ]
    },
    "user_defined_type_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "is"
        },
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "constant_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "STRING",
          "value": "constant"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "contract_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "abstract"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "contract"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_class_heritage"
              },
              {
                "type": "SYMBOL",
                "name": "layout_specifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "contract_body"
          }
        }
      ]
    },
    "error_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "error"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "error_parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "error_parameter"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "error_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "interface_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "interface"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_class_heritage"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "contract_body"
          }
        }
      ]
    },
    "library_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "library"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "contract_body"
          }
        }
      ]
    },
    "_class_heritage": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "is"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "inheritance_specifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "inheritance_specifier"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "layout_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "layout"
        },
        {
          "type": "STRING",
          "value": "at"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "inheritance_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "ancestor",
          "content": {
            "type": "SYMBOL",
            "name": "user_defined_type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "ancestor_arguments",
              "content": {
                "type": "SYMBOL",
                "name": "_call_arguments"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "contract_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_contract_member"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_contract_member": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "modifier_definition"
        },
        {
          "type": "SYMBOL",
          "name": "error_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "state_variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "struct_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "event_definition"
        },
        {
          "type": "SYMBOL",
          "name": "using_directive"
        },
        {
          "type": "SYMBOL",
          "name": "constructor_definition"
        },
        {
          "type": "SYMBOL",
          "name": "fallback_receive_definition"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_type_definition"
        }
      ]
    },
    "struct_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "struct_body"
          }
        }
      ]
    },
    "struct_member": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "struct_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "struct_member"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "enum_body"
          }
        }
      ]
    },
    "enum_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  "named": true,
                  "value": "enum_value"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        "named": true,
                        "value": "enum_value"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "event_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "event"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_event_parameter_list"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "anonymous"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "_event_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "event_parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "event_parameter"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "event_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "indexed"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "user_definable_operator": {
      "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": "%"
        },
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": ">="
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": "!="
        }
      ]
    },
    "using_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "using"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "user_defined_type"
              },
              "named": true,
              "value": "type_alias"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "using_alias"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "using_alias"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "FIELD",
          "name": "source",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "any_source_type"
              },
              {
                "type": "SYMBOL",
                "name": "type_name"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "global"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "using_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "user_defined_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "as"
                },
                {
                  "type": "SYMBOL",
                  "name": "user_definable_operator"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "any_source_type": {
      "type": "STRING",
      "value": "*"
    },
    "statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "block_statement"
        },
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "variable_declaration_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "continue_statement"
        },
        {
          "type": "SYMBOL",
          "name": "break_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "emit_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assembly_statement"
        },
        {
          "type": "SYMBOL",
          "name": "revert_statement"
        }
      ]
    },
    "assembly_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "assembly"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "\"evmasm\""
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "assembly_flags"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_yul_statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "assembly_flags": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "string"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "string"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_yul_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "yul_block"
        },
        {
          "type": "SYMBOL",
          "name": "yul_variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "yul_assignment"
        },
        {
          "type": "SYMBOL",
          "name": "yul_function_call"
        },
        {
          "type": "SYMBOL",
          "name": "yul_if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yul_for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yul_switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yul_leave"
        },
        {
          "type": "SYMBOL",
          "name": "yul_break"
        },
        {
          "type": "SYMBOL",
          "name": "yul_continue"
        },
        {
          "type": "SYMBOL",
          "name": "yul_function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "yul_label"
        },
        {
          "type": "SYMBOL",
          "name": "_yul_literal"
        }
      ]
    },
    "yul_label": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "yul_leave": {
      "type": "STRING",
      "value": "leave"
    },
    "yul_break": {
      "type": "STRING",
      "value": "break"
    },
    "yul_continue": {
      "type": "STRING",
      "value": "continue"
    },
    "yul_identifier": {
      "type": "SYMBOL",
      "name": "identifier"
    },
    "_yul_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "yul_path"
        },
        {
          "type": "SYMBOL",
          "name": "yul_function_call"
        },
        {
          "type": "SYMBOL",
          "name": "_yul_literal"
        }
      ]
    },
    "yul_path": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "yul_identifier"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "yul_identifier"
                }
              ]
            }
          }
        ]
      }
    },
    "_yul_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "yul_decimal_number"
        },
        {
          "type": "SYMBOL",
          "name": "yul_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "yul_hex_number"
        },
        {
          "type": "SYMBOL",
          "name": "yul_boolean"
        },
        {
          "type": "SYMBOL",
          "name": "yul_hex_string_literal"
        }
      ]
    },
    "yul_decimal_number": {
      "type": "PATTERN",
      "value": "0|([1-9][0-9]*)"
    },
    "yul_string_literal": {
      "type": "SYMBOL",
      "name": "string"
    },
    "yul_hex_number": {
      "type": "PATTERN",
      "value": "0x[0-9A-Fa-f]*"
    },
    "yul_boolean": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "yul_hex_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "hex"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "\""
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_hex_digit"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "_"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_hex_digit"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "\""
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "'"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_hex_digit"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "_"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_hex_digit"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "'"
                }
              ]
            }
          ]
        }
      ]
    },
    "yul_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_yul_statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "yul_variable_declaration": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "let"
              },
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "yul_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":="
                      },
                      {
                        "type": "FIELD",
                        "name": "right",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_yul_expression"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "let"
              },
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "yul_identifier"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "yul_identifier"
                              }
                            ]
                          }
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "("
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "yul_identifier"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": ","
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "yul_identifier"
                                  }
                                ]
                              }
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": ","
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "STRING",
                          "value": ")"
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":="
                      },
                      {
                        "type": "FIELD",
                        "name": "right",
                        "content": {
                          "type": "SYMBOL",
                          "name": "yul_function_call"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "_yul_assignment_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ":="
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "STRING",
              "value": "="
            }
          ]
        }
      ]
    },
    "yul_assignment": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "yul_path"
              },
              {
                "type": "SYMBOL",
                "name": "_yul_assignment_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_yul_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "yul_path"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "yul_path"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_yul_assignment_operator"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "yul_function_call"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "yul_function_call": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "function",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "yul_identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "yul_evm_builtin"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_yul_expression"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_yul_expression"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "function",
          "content": {
            "type": "SYMBOL",
            "name": "yul_evm_builtin"
          }
        }
      ]
    },
    "yul_if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "SYMBOL",
          "name": "_yul_expression"
        },
        {
          "type": "SYMBOL",
          "name": "yul_block"
        }
      ]
    },
    "yul_for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "SYMBOL",
          "name": "yul_block"
        },
        {
          "type": "SYMBOL",
          "name": "_yul_expression"
        },
        {
          "type": "SYMBOL",
          "name": "yul_block"
        },
        {
          "type": "SYMBOL",
          "name": "yul_block"
        }
      ]
    },
    "yul_switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "SYMBOL",
          "name": "_yul_expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "default"
                },
                {
                  "type": "SYMBOL",
                  "name": "yul_block"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT1",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "case"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_yul_literal"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "yul_block"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "default"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "yul_block"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "yul_function_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "SYMBOL",
          "name": "yul_identifier"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "yul_identifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "yul_identifier"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "->"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "yul_identifier"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "yul_identifier"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "yul_block"
        }
      ]
    },
    "yul_evm_builtin": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "stop"
          },
          {
            "type": "STRING",
            "value": "add"
          },
          {
            "type": "STRING",
            "value": "sub"
          },
          {
            "type": "STRING",
            "value": "mul"
          },
          {
            "type": "STRING",
            "value": "div"
          },
          {
            "type": "STRING",
            "value": "sdiv"
          },
          {
            "type": "STRING",
            "value": "mod"
          },
          {
            "type": "STRING",
            "value": "smod"
          },
          {
            "type": "STRING",
            "value": "exp"
          },
          {
            "type": "STRING",
            "value": "not"
          },
          {
            "type": "STRING",
            "value": "lt"
          },
          {
            "type": "STRING",
            "value": "gt"
          },
          {
            "type": "STRING",
            "value": "slt"
          },
          {
            "type": "STRING",
            "value": "sgt"
          },
          {
            "type": "STRING",
            "value": "eq"
          },
          {
            "type": "STRING",
            "value": "iszero"
          },
          {
            "type": "STRING",
            "value": "and"
          },
          {
            "type": "STRING",
            "value": "or"
          },
          {
            "type": "STRING",
            "value": "xor"
          },
          {
            "type": "STRING",
            "value": "byte"
          },
          {
            "type": "STRING",
            "value": "shl"
          },
          {
            "type": "STRING",
            "value": "shr"
          },
          {
            "type": "STRING",
            "value": "sar"
          },
          {
            "type": "STRING",
            "value": "addmod"
          },
          {
            "type": "STRING",
            "value": "mulmod"
          },
          {
            "type": "STRING",
            "value": "signextend"
          },
          {
            "type": "STRING",
            "value": "keccak256"
          },
          {
            "type": "STRING",
            "value": "pop"
          },
          {
            "type": "STRING",
            "value": "mload"
          },
          {
            "type": "STRING",
            "value": "mcopy"
          },
          {
            "type": "STRING",
            "value": "tload"
          },
          {
            "type": "STRING",
            "value": "tstore"
          },
          {
            "type": "STRING",
            "value": "mstore"
          },
          {
            "type": "STRING",
            "value": "mstore8"
          },
          {
            "type": "STRING",
            "value": "sload"
          },
          {
            "type": "STRING",
            "value": "sstore"
          },
          {
            "type": "STRING",
            "value": "msize"
          },
          {
            "type": "STRING",
            "value": "gas"
          },
          {
            "type": "STRING",
            "value": "address"
          },
          {
            "type": "STRING",
            "value": "balance"
          },
          {
            "type": "STRING",
            "value": "selfbalance"
          },
          {
            "type": "STRING",
            "value": "caller"
          },
          {
            "type": "STRING",
            "value": "callvalue"
          },
          {
            "type": "STRING",
            "value": "calldataload"
          },
          {
            "type": "STRING",
            "value": "calldatasize"
          },
          {
            "type": "STRING",
            "value": "calldatacopy"
          },
          {
            "type": "STRING",
            "value": "extcodesize"
          },
          {
            "type": "STRING",
            "value": "extcodecopy"
          },
          {
            "type": "STRING",
            "value": "returndatasize"
          },
          {
            "type": "STRING",
            "value": "returndatacopy"
          },
          {
            "type": "STRING",
            "value": "extcodehash"
          },
          {
            "type": "STRING",
            "value": "create"
          },
          {
            "type": "STRING",
            "value": "create2"
          },
          {
            "type": "STRING",
            "value": "call"
          },
          {
            "type": "STRING",
            "value": "callcode"
          },
          {
            "type": "STRING",
            "value": "delegatecall"
          },
          {
            "type": "STRING",
            "value": "staticcall"
          },
          {
            "type": "STRING",
            "value": "return"
          },
          {
            "type": "STRING",
            "value": "revert"
          },
          {
            "type": "STRING",
            "value": "selfdestruct"
          },
          {
            "type": "STRING",
            "value": "invalid"
          },
          {
            "type": "STRING",
            "value": "log0"
          },
          {
            "type": "STRING",
            "value": "log1"
          },
          {
            "type": "STRING",
            "value": "log2"
          },
          {
            "type": "STRING",
            "value": "log3"
          },
          {
            "type": "STRING",
            "value": "log4"
          },
          {
            "type": "STRING",
            "value": "chainid"
          },
          {
            "type": "STRING",
            "value": "origin"
          },
          {
            "type": "STRING",
            "value": "gasprice"
          },
          {
            "type": "STRING",
            "value": "blockhash"
          },
          {
            "type": "STRING",
            "value": "blobhash"
          },
          {
            "type": "STRING",
            "value": "basefee"
          },
          {
            "type": "STRING",
            "value": "blobfee"
          },
          {
            "type": "STRING",
            "value": "coinbase"
          },
          {
            "type": "STRING",
            "value": "timestamp"
          },
          {
            "type": "STRING",
            "value": "number"
          },
          {
            "type": "STRING",
            "value": "difficulty"
          },
          {
            "type": "STRING",
            "value": "gaslimit"
          },
          {
            "type": "STRING",
            "value": "prevrandao"
          },
          {
            "type": "STRING",
            "value": "blobbasefee"
          },
          {
            "type": "STRING",
            "value": "blobfee"
          }
        ]
      }
    },
    "unchecked": {
      "type": "STRING",
      "value": "unchecked"
    },
    "block_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "unchecked"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "variable_declaration_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "variable_declaration"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "="
                          },
                          {
                            "type": "FIELD",
                            "name": "value",
                            "content": {
                              "type": "SYMBOL",
                              "name": "expression"
                            }
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "variable_declaration_tuple"
                  },
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "FIELD",
                    "name": "value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_semicolon"
          }
        ]
      }
    },
    "variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "FIELD",
          "name": "location",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "memory"
                  },
                  {
                    "type": "STRING",
                    "value": "storage"
                  },
                  {
                    "type": "STRING",
                    "value": "calldata"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "variable_declaration_tuple": {
      "type": "PREC",
      "value": 3,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "variable_declaration"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "variable_declaration"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "var"
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "identifier"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        ]
      }
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          },
          {
            "type": "FIELD",
            "name": "else",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "else"
                    },
                    {
                      "type": "FIELD",
                      "name": "body",
                      "content": {
                        "type": "SYMBOL",
                        "name": "statement"
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "initial",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variable_declaration_statement"
              },
              {
                "type": "SYMBOL",
                "name": "expression_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_semicolon"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_semicolon"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "update",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "do_while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "continue_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "break_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "revert_statement": {
      "type": "PREC",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "revert"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "error",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_call_arguments"
                },
                "named": true,
                "value": "revert_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_semicolon"
          }
        ]
      }
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "attempt",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "returns"
                },
                {
                  "type": "SYMBOL",
                  "name": "_parameter_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block_statement"
          }
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        }
      ]
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_parameter_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block_statement"
          }
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "emit_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "emit"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_call_arguments"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "state_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "visibility",
                "content": {
                  "type": "SYMBOL",
                  "name": "visibility"
                }
              },
              {
                "type": "STRING",
                "value": "constant"
              },
              {
                "type": "SYMBOL",
                "name": "override_specifier"
              },
              {
                "type": "SYMBOL",
                "name": "immutable"
              },
              {
                "type": "FIELD",
                "name": "location",
                "content": {
                  "type": "SYMBOL",
                  "name": "state_location"
                }
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "visibility": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "public"
        },
        {
          "type": "STRING",
          "value": "internal"
        },
        {
          "type": "STRING",
          "value": "private"
        },
        {
          "type": "STRING",
          "value": "external"
        }
      ]
    },
    "state_mutability": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "pure"
        },
        {
          "type": "STRING",
          "value": "view"
        },
        {
          "type": "STRING",
          "value": "payable"
        }
      ]
    },
    "state_location": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "transient"
        }
      ]
    },
    "immutable": {
      "type": "STRING",
      "value": "immutable"
    },
    "override_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "override"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "user_defined_type"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "user_defined_type"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "modifier_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "modifier"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "virtual"
              },
              {
                "type": "SYMBOL",
                "name": "override_specifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "function_body"
              }
            }
          ]
        }
      ]
    },
    "constructor_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "constructor"
        },
        {
          "type": "SYMBOL",
          "name": "_parameter_list"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "modifier_invocation"
              },
              {
                "type": "STRING",
                "value": "payable"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "internal"
                  },
                  {
                    "type": "STRING",
                    "value": "public"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "function_body"
          }
        }
      ]
    },
    "fallback_receive_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "fallback"
                    },
                    {
                      "type": "STRING",
                      "value": "receive"
                    },
                    {
                      "type": "STRING",
                      "value": "function"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": "function"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_parameter_list"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "visibility"
              },
              {
                "type": "SYMBOL",
                "name": "modifier_invocation"
              },
              {
                "type": "SYMBOL",
                "name": "state_mutability"
              },
              {
                "type": "SYMBOL",
                "name": "virtual"
              },
              {
                "type": "SYMBOL",
                "name": "override_specifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "returns"
                },
                {
                  "type": "SYMBOL",
                  "name": "_parameter_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "function_body"
              }
            }
          ]
        }
      ]
    },
    "function_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_parameter_list"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "modifier_invocation"
              },
              {
                "type": "SYMBOL",
                "name": "visibility"
              },
              {
                "type": "SYMBOL",
                "name": "state_mutability"
              },
              {
                "type": "SYMBOL",
                "name": "virtual"
              },
              {
                "type": "SYMBOL",
                "name": "override_specifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "return_type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "return_type_definition"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "function_body"
              }
            }
          ]
        }
      ]
    },
    "return_type_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "returns"
        },
        {
          "type": "SYMBOL",
          "name": "_parameter_list"
        }
      ]
    },
    "virtual": {
      "type": "STRING",
      "value": "virtual"
    },
    "modifier_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_identifier_path"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_call_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_call_arguments": {
      "type": "PREC",
      "value": 4,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "call_argument"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "call_argument"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "call_argument": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "call_struct_argument"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "call_struct_argument"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        }
      ]
    },
    "call_struct_argument": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "function_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "update_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "payable_conversion_expression"
        },
        {
          "type": "SYMBOL",
          "name": "meta_type_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "struct_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ternary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "type_cast_expression"
        }
      ]
    },
    "_primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "member_expression"
        },
        {
          "type": "SYMBOL",
          "name": "array_access"
        },
        {
          "type": "SYMBOL",
          "name": "slice_access"
        },
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "augmented_assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_expression"
        },
        {
          "type": "SYMBOL",
          "name": "inline_array_expression"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "new_expression"
        }
      ]
    },
    "type_cast_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "primitive_type"
          },
          {
            "type": "SYMBOL",
            "name": "_call_arguments"
          }
        ]
      }
    },
    "ternary_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          }
        ]
      }
    },
    "new_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "type_name"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_call_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "tuple_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "expression"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "inline_array_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "*"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "delete"
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!"
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "~"
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "update_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "++"
                    },
                    {
                      "type": "STRING",
                      "value": "--"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "++"
                    },
                    {
                      "type": "STRING",
                      "value": "--"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "member_expression": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "object",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "property",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          }
        ]
      }
    },
    "array_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "base",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "index",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "slice_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "base",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "from",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "to",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "struct_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "struct_field_assignment"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "struct_field_assignment"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "struct_field_assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "parenthesized_expression": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "assignment_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "augmented_assignment_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "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": "|="
              },
              {
                "type": "STRING",
                "value": ">>="
              },
              {
                "type": "STRING",
                "value": "<<="
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC_RIGHT",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "SYMBOL",
            "name": "_call_arguments"
          }
        ]
      }
    },
    "payable_conversion_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "payable"
        },
        {
          "type": "SYMBOL",
          "name": "_call_arguments"
        }
      ]
    },
    "meta_type_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "type_name"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "type_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_type"
        },
        {
          "type": "SYMBOL",
          "name": "_mapping"
        },
        {
          "type": "SYMBOL",
          "name": "_array_type"
        },
        {
          "type": "SYMBOL",
          "name": "_function_type"
        }
      ]
    },
    "_array_type": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "type_name"
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "_function_type": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "function"
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "_parameter_list"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "visibility"
                },
                {
                  "type": "SYMBOL",
                  "name": "state_mutability"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_return_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "parameter"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_return_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "returns"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_nameless_parameter"
              },
              "named": true,
              "value": "return_parameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_nameless_parameter"
                    },
                    "named": true,
                    "value": "return_parameter"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_nameless_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "FIELD",
          "name": "location",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_storage_location"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "location",
              "content": {
                "type": "SYMBOL",
                "name": "_storage_location"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_storage_location": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "memory"
        },
        {
          "type": "STRING",
          "value": "storage"
        },
        {
          "type": "STRING",
          "value": "calldata"
        }
      ]
    },
    "user_defined_type": {
      "type": "SYMBOL",
      "name": "_identifier_path"
    },
    "_identifier_path": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "identifier"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            }
          }
        ]
      }
    },
    "_mapping": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "mapping"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "key_type",
          "content": {
            "type": "SYMBOL",
            "name": "_mapping_key"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "key_identifier",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "FIELD",
          "name": "value_type",
          "content": {
            "type": "SYMBOL",
            "name": "type_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "value_identifier",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_mapping_key": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_type"
        }
      ]
    },
    "primitive_type": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "address"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "payable"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": "bool"
          },
          {
            "type": "STRING",
            "value": "string"
          },
          {
            "type": "STRING",
            "value": "var"
          },
          {
            "type": "SYMBOL",
            "name": "_int"
          },
          {
            "type": "SYMBOL",
            "name": "_uint"
          },
          {
            "type": "SYMBOL",
            "name": "_bytes"
          },
          {
            "type": "SYMBOL",
            "name": "_fixed"
          },
          {
            "type": "SYMBOL",
            "name": "_ufixed"
          }
        ]
      }
    },
    "_int": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "int"
        },
        {
          "type": "STRING",
          "value": "int8"
        },
        {
          "type": "STRING",
          "value": "int16"
        },
        {
          "type": "STRING",
          "value": "int24"
        },
        {
          "type": "STRING",
          "value": "int32"
        },
        {
          "type": "STRING",
          "value": "int40"
        },
        {
          "type": "STRING",
          "value": "int48"
        },
        {
          "type": "STRING",
          "value": "int56"
        },
        {
          "type": "STRING",
          "value": "int64"
        },
        {
          "type": "STRING",
          "value": "int72"
        },
        {
          "type": "STRING",
          "value": "int80"
        },
        {
          "type": "STRING",
          "value": "int88"
        },
        {
          "type": "STRING",
          "value": "int96"
        },
        {
          "type": "STRING",
          "value": "int104"
        },
        {
          "type": "STRING",
          "value": "int112"
        },
        {
          "type": "STRING",
          "value": "int120"
        },
        {
          "type": "STRING",
          "value": "int128"
        },
        {
          "type": "STRING",
          "value": "int136"
        },
        {
          "type": "STRING",
          "value": "int144"
        },
        {
          "type": "STRING",
          "value": "int152"
        },
        {
          "type": "STRING",
          "value": "int160"
        },
        {
          "type": "STRING",
          "value": "int168"
        },
        {
          "type": "STRING",
          "value": "int176"
        },
        {
          "type": "STRING",
          "value": "int184"
        },
        {
          "type": "STRING",
          "value": "int192"
        },
        {
          "type": "STRING",
          "value": "int200"
        },
        {
          "type": "STRING",
          "value": "int208"
        },
        {
          "type": "STRING",
          "value": "int216"
        },
        {
          "type": "STRING",
          "value": "int224"
        },
        {
          "type": "STRING",
          "value": "int232"
        },
        {
          "type": "STRING",
          "value": "int240"
        },
        {
          "type": "STRING",
          "value": "int248"
        },
        {
          "type": "STRING",
          "value": "int256"
        }
      ]
    },
    "_uint": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "uint"
        },
        {
          "type": "STRING",
          "value": "uint8"
        },
        {
          "type": "STRING",
          "value": "uint16"
        },
        {
          "type": "STRING",
          "value": "uint24"
        },
        {
          "type": "STRING",
          "value": "uint32"
        },
        {
          "type": "STRING",
          "value": "uint40"
        },
        {
          "type": "STRING",
          "value": "uint48"
        },
        {
          "type": "STRING",
          "value": "uint56"
        },
        {
          "type": "STRING",
          "value": "uint64"
        },
        {
          "type": "STRING",
          "value": "uint72"
        },
        {
          "type": "STRING",
          "value": "uint80"
        },
        {
          "type": "STRING",
          "value": "uint88"
        },
        {
          "type": "STRING",
          "value": "uint96"
        },
        {
          "type": "STRING",
          "value": "uint104"
        },
        {
          "type": "STRING",
          "value": "uint112"
        },
        {
          "type": "STRING",
          "value": "uint120"
        },
        {
          "type": "STRING",
          "value": "uint128"
        },
        {
          "type": "STRING",
          "value": "uint136"
        },
        {
          "type": "STRING",
          "value": "uint144"
        },
        {
          "type": "STRING",
          "value": "uint152"
        },
        {
          "type": "STRING",
          "value": "uint160"
        },
        {
          "type": "STRING",
          "value": "uint168"
        },
        {
          "type": "STRING",
          "value": "uint176"
        },
        {
          "type": "STRING",
          "value": "uint184"
        },
        {
          "type": "STRING",
          "value": "uint192"
        },
        {
          "type": "STRING",
          "value": "uint200"
        },
        {
          "type": "STRING",
          "value": "uint208"
        },
        {
          "type": "STRING",
          "value": "uint216"
        },
        {
          "type": "STRING",
          "value": "uint224"
        },
        {
          "type": "STRING",
          "value": "uint232"
        },
        {
          "type": "STRING",
          "value": "uint240"
        },
        {
          "type": "STRING",
          "value": "uint248"
        },
        {
          "type": "STRING",
          "value": "uint256"
        }
      ]
    },
    "_bytes": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "byte"
        },
        {
          "type": "STRING",
          "value": "bytes"
        },
        {
          "type": "STRING",
          "value": "bytes1"
        },
        {
          "type": "STRING",
          "value": "bytes2"
        },
        {
          "type": "STRING",
          "value": "bytes3"
        },
        {
          "type": "STRING",
          "value": "bytes4"
        },
        {
          "type": "STRING",
          "value": "bytes5"
        },
        {
          "type": "STRING",
          "value": "bytes6"
        },
        {
          "type": "STRING",
          "value": "bytes7"
        },
        {
          "type": "STRING",
          "value": "bytes8"
        },
        {
          "type": "STRING",
          "value": "bytes9"
        },
        {
          "type": "STRING",
          "value": "bytes10"
        },
        {
          "type": "STRING",
          "value": "bytes11"
        },
        {
          "type": "STRING",
          "value": "bytes12"
        },
        {
          "type": "STRING",
          "value": "bytes13"
        },
        {
          "type": "STRING",
          "value": "bytes14"
        },
        {
          "type": "STRING",
          "value": "bytes15"
        },
        {
          "type": "STRING",
          "value": "bytes16"
        },
        {
          "type": "STRING",
          "value": "bytes17"
        },
        {
          "type": "STRING",
          "value": "bytes18"
        },
        {
          "type": "STRING",
          "value": "bytes19"
        },
        {
          "type": "STRING",
          "value": "bytes20"
        },
        {
          "type": "STRING",
          "value": "bytes21"
        },
        {
          "type": "STRING",
          "value": "bytes22"
        },
        {
          "type": "STRING",
          "value": "bytes23"
        },
        {
          "type": "STRING",
          "value": "bytes24"
        },
        {
          "type": "STRING",
          "value": "bytes25"
        },
        {
          "type": "STRING",
          "value": "bytes26"
        },
        {
          "type": "STRING",
          "value": "bytes27"
        },
        {
          "type": "STRING",
          "value": "bytes28"
        },
        {
          "type": "STRING",
          "value": "bytes29"
        },
        {
          "type": "STRING",
          "value": "bytes30"
        },
        {
          "type": "STRING",
          "value": "bytes31"
        },
        {
          "type": "STRING",
          "value": "bytes32"
        }
      ]
    },
    "_fixed": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "fixed"
        },
        {
          "type": "PATTERN",
          "value": "fixed([0-9]+)x([0-9]+)"
        }
      ]
    },
    "_ufixed": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "ufixed"
        },
        {
          "type": "PATTERN",
          "value": "ufixed([0-9]+)x([0-9]+)"
        }
      ]
    },
    "_semicolon": {
      "type": "STRING",
      "value": ";"
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[a-zA-Z$_][a-zA-Z0-9$_]*"
    },
    "number": {
      "type": "PATTERN",
      "value": "\\d+"
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "number_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hex_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "unicode_string_literal"
        }
      ]
    },
    "string_literal": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SYMBOL",
          "name": "string"
        }
      }
    },
    "number_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_decimal_number"
            },
            {
              "type": "SYMBOL",
              "name": "_hex_number"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_unit"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_decimal_number": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "(\\d|_)+(\\.(\\d|_)+)?([eE](-)?(\\d|_)+)?"
        },
        {
          "type": "PATTERN",
          "value": "\\.(\\d|_)+([eE](-)?(\\d|_)+)?"
        }
      ]
    },
    "_hex_number": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "PATTERN",
        "value": "0[xX]([a-fA-F0-9][a-fA-F0-9]?_?)+"
      }
    },
    "_hex_digit": {
      "type": "PATTERN",
      "value": "([a-fA-F0-9][a-fA-F0-9])"
    },
    "number_unit": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "wei"
        },
        {
          "type": "STRING",
          "value": "szabo"
        },
        {
          "type": "STRING",
          "value": "finney"
        },
        {
          "type": "STRING",
          "value": "gwei"
        },
        {
          "type": "STRING",
          "value": "ether"
        },
        {
          "type": "STRING",
          "value": "seconds"
        },
        {
          "type": "STRING",
          "value": "minutes"
        },
        {
          "type": "STRING",
          "value": "hours"
        },
        {
          "type": "STRING",
          "value": "days"
        },
        {
          "type": "STRING",
          "value": "weeks"
        },
        {
          "type": "STRING",
          "value": "years"
        }
      ]
    },
    "true": {
      "type": "STRING",
      "value": "true"
    },
    "false": {
      "type": "STRING",
      "value": "false"
    },
    "boolean_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        }
      ]
    },
    "hex_string_literal": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "hex"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "\""
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_hex_digit"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "_"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "_hex_digit"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": "\""
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "'"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_hex_digit"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "_"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "_hex_digit"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": "'"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    },
    "_escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xu0-7]"
              },
              {
                "type": "PATTERN",
                "value": "[0-7]{1,3}"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2}"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "_single_quoted_unicode_char": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PREC",
        "value": 2,
        "content": {
          "type": "PATTERN",
          "value": "[^'\\\\\\n]+|\\\\\\r?\\n"
        }
      }
    },
    "_double_quoted_unicode_char": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PREC",
        "value": 2,
        "content": {
          "type": "PATTERN",
          "value": "[^\"\\\\\\n]+|\\\\\\r?\\n"
        }
      }
    },
    "unicode_string_literal": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "unicode"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "\""
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_double_quoted_unicode_char"
                      }
                    },
                    {
                      "type": "STRING",
                      "value": "\""
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "'"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_single_quoted_unicode_char"
                      }
                    },
                    {
                      "type": "STRING",
                      "value": "'"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    },
    "string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_string_immediate_elt_inside_double_quote"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_escape_sequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "'"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_string_immediate_elt_inside_quote"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_escape_sequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        }
      ]
    },
    "_string_immediate_elt_inside_double_quote": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PREC",
        "value": 2,
        "content": {
          "type": "PATTERN",
          "value": "[^\"\\\\\\n]+|\\\\\\r?\\n"
        }
      }
    },
    "_string_immediate_elt_inside_quote": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PREC",
        "value": 2,
        "content": {
          "type": "PATTERN",
          "value": "[^'\\\\\\n]+|\\\\\\r?\\n"
        }
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 1,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "//"
                },
                {
                  "type": "PATTERN",
                  "value": "([^\\r\\n])*"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "/*"
                },
                {
                  "type": "PATTERN",
                  "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
                },
                {
                  "type": "STRING",
                  "value": "/"
                }
              ]
            }
          ]
        }
      }
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "PATTERN",
      "value": "[\\s\\uFEFF\\u2060\\u200B\\u00A0]"
    }
  ],
  "conflicts": [
    [
      "_primary_expression",
      "type_name"
    ],
    [
      "_primary_expression",
      "_identifier_path"
    ],
    [
      "_primary_expression",
      "member_expression",
      "_identifier_path"
    ],
    [
      "member_expression",
      "_identifier_path"
    ],
    [
      "layout_specifier",
      "struct_expression"
    ],
    [
      "_nameless_parameter",
      "parameter"
    ],
    [
      "_primary_expression",
      "type_cast_expression"
    ],
    [
      "variable_declaration_tuple",
      "tuple_expression"
    ],
    [
      "_yul_expression",
      "yul_assignment"
    ],
    [
      "yul_label",
      "yul_identifier"
    ],
    [
      "fallback_receive_definition",
      "_function_type"
    ]
  ],
  "precedences": [],
  "externals": [],
  "inline": [],
  "supertypes": [],
  "reserved": {}
}