{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "bos",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_top_level_item"
      }
    },
    "_top_level_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "declaration"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_if_top_level"
          },
          "named": true,
          "value": "preproc_if"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_ifdef_top_level"
          },
          "named": true,
          "value": "preproc_ifdef"
        },
        {
          "type": "SYMBOL",
          "name": "macro_name_statement"
        },
        {
          "type": "SYMBOL",
          "name": "macro_call_statement"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_include"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_function_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_undef"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_line"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_directive"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_block_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "statement"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_if"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_ifdef"
        },
        {
          "type": "SYMBOL",
          "name": "macro_name_statement"
        },
        {
          "type": "SYMBOL",
          "name": "macro_call_statement"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_include"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_function_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_undef"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_line"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_directive"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "macro_name_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_define_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "macro_call_statement": {
      "type": "PREC",
      "value": 15,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_macro_call_expression"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ";"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "\\r?\\n"
            }
          }
        ]
      }
    },
    "declaration": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "piece_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "static_var_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "function_declaration"
          }
        ]
      }
    },
    "piece_declaration": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "piece",
              "flags": "i"
            },
            "named": false,
            "value": "piece"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "_piece_name"
                }
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "FIELD",
                      "name": "name",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_piece_name"
                      }
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "static_var_declaration": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "static-?var",
              "flags": "i"
            },
            "named": false,
            "value": "static-var"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "_var_name"
                }
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "FIELD",
                      "name": "name",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_var_name"
                      }
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "function_declaration": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_func_name"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "()"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "arg",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_arg_name"
                        }
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "FIELD",
                              "name": "arg",
                              "content": {
                                "type": "SYMBOL",
                                "name": "_arg_name"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  }
                ]
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "compound_statement"
            }
          }
        ]
      }
    },
    "compound_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_block_item"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "compound_statement"
        },
        {
          "type": "SYMBOL",
          "name": "keyword_statement"
        },
        {
          "type": "SYMBOL",
          "name": "var_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assign_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "var_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "var",
            "flags": "i"
          },
          "named": false,
          "value": "var"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_var_name"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_var_name"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "if_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "if",
              "flags": "i"
            },
            "named": false,
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "then",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "PATTERN",
                      "value": "else",
                      "flags": "i"
                    },
                    "named": false,
                    "value": "else"
                  },
                  {
                    "type": "FIELD",
                    "name": "else",
                    "content": {
                      "type": "SYMBOL",
                      "name": "statement"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "while",
            "flags": "i"
          },
          "named": false,
          "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"
          }
        }
      ]
    },
    "assign_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "_var_name"
              }
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "increment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "decrement_statement"
        }
      ]
    },
    "increment_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "++"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_var_name"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "decrement_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "--"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_var_name"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "return",
            "flags": "i"
          },
          "named": false,
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "keyword_statement": {
      "type": "PREC_LEFT",
      "value": 11,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "call_script_statement"
          },
          {
            "type": "SYMBOL",
            "name": "start_script_statement"
          },
          {
            "type": "SYMBOL",
            "name": "signal_statement"
          },
          {
            "type": "SYMBOL",
            "name": "set_signal_mask_statement"
          },
          {
            "type": "SYMBOL",
            "name": "sleep_statement"
          },
          {
            "type": "SYMBOL",
            "name": "set_statement"
          },
          {
            "type": "SYMBOL",
            "name": "get_statement"
          },
          {
            "type": "SYMBOL",
            "name": "spin_statement"
          },
          {
            "type": "SYMBOL",
            "name": "stop_spin_statement"
          },
          {
            "type": "SYMBOL",
            "name": "turn_statement"
          },
          {
            "type": "SYMBOL",
            "name": "move_statement"
          },
          {
            "type": "SYMBOL",
            "name": "wait_for_turn_statement"
          },
          {
            "type": "SYMBOL",
            "name": "wait_for_move_statement"
          },
          {
            "type": "SYMBOL",
            "name": "hide_statement"
          },
          {
            "type": "SYMBOL",
            "name": "show_statement"
          },
          {
            "type": "SYMBOL",
            "name": "emit_sfx_statement"
          },
          {
            "type": "SYMBOL",
            "name": "explode_statement"
          },
          {
            "type": "SYMBOL",
            "name": "attach_unit_statement"
          },
          {
            "type": "SYMBOL",
            "name": "drop_unit_statement"
          },
          {
            "type": "SYMBOL",
            "name": "cache_statement"
          },
          {
            "type": "SYMBOL",
            "name": "dont_cache_statement"
          },
          {
            "type": "SYMBOL",
            "name": "dont_shadow_statement"
          },
          {
            "type": "SYMBOL",
            "name": "dont_shade_statement"
          }
        ]
      }
    },
    "axis": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "x-?axis",
          "flags": "i"
        },
        {
          "type": "PATTERN",
          "value": "y-?axis",
          "flags": "i"
        },
        {
          "type": "PATTERN",
          "value": "z-?axis",
          "flags": "i"
        }
      ]
    },
    "argument_list": {
      "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": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "call_script_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "keyword",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "call-?script",
                    "flags": "i"
                  },
                  "named": false,
                  "value": "call-script"
                }
              },
              {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "FIELD",
                  "name": "function",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_func_name"
                  }
                }
              },
              {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "FIELD",
                  "name": "arguments",
                  "content": {
                    "type": "SYMBOL",
                    "name": "argument_list"
                  }
                }
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        }
      ]
    },
    "start_script_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "keyword",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "PATTERN",
                    "value": "start-?script",
                    "flags": "i"
                  },
                  "named": false,
                  "value": "start-script"
                }
              },
              {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "FIELD",
                  "name": "function",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_func_name"
                  }
                }
              },
              {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "FIELD",
                  "name": "arguments",
                  "content": {
                    "type": "SYMBOL",
                    "name": "argument_list"
                  }
                }
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        }
      ]
    },
    "signal_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "signal",
                "flags": "i"
              },
              "named": false,
              "value": "signal"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "set_signal_mask_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "set-?signal-?mask",
                "flags": "i"
              },
              "named": false,
              "value": "set-signal-mask"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "sleep_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "sleep",
                "flags": "i"
              },
              "named": false,
              "value": "sleep"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "set_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "set",
                "flags": "i"
              },
              "named": false,
              "value": "set"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "to",
                "flags": "i"
              },
              "named": false,
              "value": "to"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "get_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "get",
                "flags": "i"
              },
              "named": false,
              "value": "get"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "call",
              "content": {
                "type": "SYMBOL",
                "name": "get_call"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "spin_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "spin",
                "flags": "i"
              },
              "named": false,
              "value": "spin"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "around",
                "flags": "i"
              },
              "named": false,
              "value": "around"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "speed",
                "flags": "i"
              },
              "named": false,
              "value": "speed"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "accelerate"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "stop_spin_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "stop-?spin",
                "flags": "i"
              },
              "named": false,
              "value": "stop-spin"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "around",
                "flags": "i"
              },
              "named": false,
              "value": "around"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "decelerate"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "speed_or_now": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "now"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "speed"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        }
      ]
    },
    "turn_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "turn",
                "flags": "i"
              },
              "named": false,
              "value": "turn"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "to",
                "flags": "i"
              },
              "named": false,
              "value": "to"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "speed_or_now"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "move_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "move",
                "flags": "i"
              },
              "named": false,
              "value": "move"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "to",
                "flags": "i"
              },
              "named": false,
              "value": "to"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "speed_or_now"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "wait_for_turn_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "wait-?for-?turn",
                "flags": "i"
              },
              "named": false,
              "value": "wait-for-turn"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "around",
                "flags": "i"
              },
              "named": false,
              "value": "around"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "wait_for_move_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "wait-?for-?move",
                "flags": "i"
              },
              "named": false,
              "value": "wait-for-move"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "along",
                "flags": "i"
              },
              "named": false,
              "value": "along"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "axis",
              "content": {
                "type": "SYMBOL",
                "name": "axis"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "hide_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "hide",
                "flags": "i"
              },
              "named": false,
              "value": "hide"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "show_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "show",
                "flags": "i"
              },
              "named": false,
              "value": "show"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "emit_sfx_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "emit-?sfx",
                "flags": "i"
              },
              "named": false,
              "value": "emit-sfx"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "from",
                "flags": "i"
              },
              "named": false,
              "value": "from"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "explode_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "explode",
                "flags": "i"
              },
              "named": false,
              "value": "explode"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "type",
                "flags": "i"
              },
              "named": false,
              "value": "type"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "attach_unit_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "attach-?unit",
                "flags": "i"
              },
              "named": false,
              "value": "attach-unit"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "PREC",
            "value": 2,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "to",
                "flags": "i"
              },
              "named": false,
              "value": "to"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "drop_unit_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "drop-?unit",
                "flags": "i"
              },
              "named": false,
              "value": "drop-unit"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "cache_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "cache",
                "flags": "i"
              },
              "named": false,
              "value": "cache"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "dont_cache_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "dont-?cache",
                "flags": "i"
              },
              "named": false,
              "value": "dont-cache"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "shade_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "shade",
                "flags": "i"
              },
              "named": false,
              "value": "shade"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "dont_shade_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "dont-?shade",
                "flags": "i"
              },
              "named": false,
              "value": "dont-shade"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "dont_shadow_statement": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "keyword",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "dont-?shadow",
                "flags": "i"
              },
              "named": false,
              "value": "dont-shadow"
            }
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "FIELD",
              "name": "piece",
              "content": {
                "type": "SYMBOL",
                "name": "_piece_name"
              }
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_not_binary"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        }
      ]
    },
    "_expression_not_binary": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_macro_call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "constant"
        },
        {
          "type": "SYMBOL",
          "name": "varying"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_macro_call_expression": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "preproc_call_expression"
      },
      "named": true,
      "value": "macro_call_expression"
    },
    "get_term": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "get",
            "flags": "i"
          },
          "named": false,
          "value": "get"
        },
        {
          "type": "SYMBOL",
          "name": "get_call"
        }
      ]
    },
    "unary_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "!"
                  },
                  {
                    "type": "PATTERN",
                    "value": "not",
                    "flags": "i"
                  }
                ]
              },
              "named": false,
              "value": "!"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "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"
                }
              }
            ]
          }
        },
        {
          "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"
                }
              }
            ]
          }
        },
        {
          "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"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "^^"
                      },
                      {
                        "type": "PATTERN",
                        "value": "xor",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "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": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "||"
                      },
                      {
                        "type": "PATTERN",
                        "value": "or",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "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": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "&&"
                      },
                      {
                        "type": "PATTERN",
                        "value": "and",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "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": 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": 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"
                }
              }
            ]
          }
        }
      ]
    },
    "rand_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "rand",
            "flags": "i"
          },
          "named": false,
          "value": "rand"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "lower_bound",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "FIELD",
          "name": "upper_bound",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "get_call": {
      "type": "CHOICE",
      "members": [
        {
          "type": "FIELD",
          "name": "value_index",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "value_index",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "FIELD",
              "name": "arg",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "FIELD",
                      "name": "arg",
                      "content": {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "FIELD",
                      "name": "arg",
                      "content": {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "FIELD",
                      "name": "arg",
                      "content": {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "varying": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "rand_call"
        },
        {
          "type": "SYMBOL",
          "name": "get_term"
        },
        {
          "type": "PREC_DYNAMIC",
          "value": 1,
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_var_name"
            },
            "named": true,
            "value": "var_name_term"
          }
        }
      ]
    },
    "constant": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "linear_constant"
        },
        {
          "type": "SYMBOL",
          "name": "degree_constant"
        },
        {
          "type": "SYMBOL",
          "name": "number_literal"
        }
      ]
    },
    "linear_constant": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "degree_constant": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[a-z_][a-z_0-9]*",
      "flags": "i"
    },
    "_var_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "var_name"
    },
    "_piece_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "piece_name"
    },
    "_func_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "func_name"
    },
    "_arg_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "arg_name"
    },
    "_define_name": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "define_name"
    },
    "preproc_arg": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "\\S([^/\\n]|\\/[^*]|\\\\\\r?\\n)*"
        }
      }
    },
    "preproc_include": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*include"
          },
          "named": false,
          "value": "#include"
        },
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "string_literal"
              },
              {
                "type": "SYMBOL",
                "name": "system_lib_string"
              },
              {
                "type": "SYMBOL",
                "name": "_define_name"
              },
              {
                "type": "SYMBOL",
                "name": "preproc_call_expression"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_def": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*define"
          },
          "named": false,
          "value": "#define"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_define_name"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_function_def": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*define"
          },
          "named": false,
          "value": "#define"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_define_name"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_params"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_params": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "("
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "STRING",
                      "value": "..."
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "STRING",
                            "value": "..."
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_undef": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*undef"
          },
          "named": false,
          "value": "#undef"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_define_name"
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "directive",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_directive_name"
          }
        },
        {
          "type": "FIELD",
          "name": "argument",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_directive_name": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "#[ \\t]*[a-zA-Z0-9]\\w*"
        }
      }
    },
    "preproc_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_define_name"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "constant"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_defined"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_parenthesized_expression"
        }
      ]
    },
    "preproc_call_expression": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_argument_list"
            }
          }
        ]
      }
    },
    "preproc_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "preproc_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_defined": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "defined"
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SYMBOL",
                "name": "_define_name"
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "defined"
            },
            {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          ]
        }
      ]
    },
    "preproc_unary_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "!"
                      },
                      {
                        "type": "PATTERN",
                        "value": "not",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "value": "!"
                },
                {
                  "type": "STRING",
                  "value": "~"
                },
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "STRING",
                  "value": "+"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_expression"
            }
          }
        ]
      }
    },
    "preproc_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "*"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "^^"
                      },
                      {
                        "type": "PATTERN",
                        "value": "xor",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "value": "^^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "||"
                      },
                      {
                        "type": "PATTERN",
                        "value": "or",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "&&"
                      },
                      {
                        "type": "PATTERN",
                        "value": "and",
                        "flags": "i"
                      }
                    ]
                  },
                  "named": false,
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "preproc_parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "preproc_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "number_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[-+]"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "0[xX]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "0[bB]"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "REPEAT1",
                            "content": {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "PATTERN",
                                  "value": "['_]"
                                },
                                {
                                  "type": "REPEAT1",
                                  "content": {
                                    "type": "PATTERN",
                                    "value": "[0-9]"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "0[xX]"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "PATTERN",
                                      "value": "['_]"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[0-9a-fA-F]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "."
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "REPEAT1",
                                    "content": {
                                      "type": "PATTERN",
                                      "value": "[0-9a-fA-F]"
                                    }
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "PATTERN",
                                          "value": "['_]"
                                        },
                                        {
                                          "type": "REPEAT1",
                                          "content": {
                                            "type": "PATTERN",
                                            "value": "[0-9a-fA-F]"
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "REPEAT1",
                        "content": {
                          "type": "PATTERN",
                          "value": "[0-9]"
                        }
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "['_]"
                            },
                            {
                              "type": "REPEAT1",
                              "content": {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": "[fF]*"
          }
        ]
      }
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "PREC",
                    "value": 1,
                    "content": {
                      "type": "PATTERN",
                      "value": "[^\\\\\"\\n]+"
                    }
                  }
                },
                "named": true,
                "value": "string_content"
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "escape_sequence": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\\"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^xuU]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\d{2,3}"
                },
                {
                  "type": "PATTERN",
                  "value": "x[0-9a-fA-F]{1,4}"
                },
                {
                  "type": "PATTERN",
                  "value": "u[0-9a-fA-F]{4}"
                },
                {
                  "type": "PATTERN",
                  "value": "U[0-9a-fA-F]{8}"
                }
              ]
            }
          ]
        }
      }
    },
    "system_lib_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "<"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^>\\n]"
                },
                {
                  "type": "STRING",
                  "value": "\\>"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ">"
          }
        ]
      }
    },
    "true": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "TRUE"
          },
          {
            "type": "STRING",
            "value": "true"
          }
        ]
      }
    },
    "false": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "FALSE"
          },
          {
            "type": "STRING",
            "value": "false"
          }
        ]
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "PATTERN",
                "value": "(\\\\+(.|\\r?\\n)|[^\\\\\\n])*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "/*"
              },
              {
                "type": "PATTERN",
                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
              },
              {
                "type": "STRING",
                "value": "/"
              }
            ]
          }
        ]
      }
    },
    "preproc_if": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_block_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_block_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_block_item"
              }
            }
          }
        ]
      }
    },
    "preproc_elif": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_block_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_block_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_top_level"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_top_level"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_item"
              }
            }
          }
        ]
      }
    },
    "preproc_elif_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_top_level"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_define_name"
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_item"
              }
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_top_level"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*line"
          },
          "named": false,
          "value": "#line"
        },
        {
          "type": "FIELD",
          "name": "lineno",
          "content": {
            "type": "SYMBOL",
            "name": "number_literal"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "filename",
              "content": {
                "type": "SYMBOL",
                "name": "string_literal"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s|\\\\\\r?\\n"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    }
  ],
  "conflicts": [
    [
      "_block_item",
      "statement"
    ],
    [
      "get_call"
    ],
    [
      "varying",
      "preproc_call_expression"
    ]
  ],
  "precedences": [],
  "externals": [],
  "inline": [
    "_expression_not_binary",
    "speed_or_now",
    "_var_name",
    "_piece_name",
    "_func_name",
    "_arg_name",
    "_define_name"
  ],
  "supertypes": [
    "expression",
    "preproc_expression",
    "statement",
    "keyword_statement",
    "declaration",
    "constant",
    "varying"
  ],
  "reserved": {}
}