1{
   2  "name": "lua",
   3  "word": "identifier",
   4  "rules": {
   5    "chunk": {
   6      "type": "SEQ",
   7      "members": [
   8        {
   9          "type": "CHOICE",
  10          "members": [
  11            {
  12              "type": "SYMBOL",
  13              "name": "hash_bang_line"
  14            },
  15            {
  16              "type": "BLANK"
  17            }
  18          ]
  19        },
  20        {
  21          "type": "REPEAT",
  22          "content": {
  23            "type": "SYMBOL",
  24            "name": "statement"
  25          }
  26        },
  27        {
  28          "type": "CHOICE",
  29          "members": [
  30            {
  31              "type": "SYMBOL",
  32              "name": "return_statement"
  33            },
  34            {
  35              "type": "BLANK"
  36            }
  37          ]
  38        }
  39      ]
  40    },
  41    "hash_bang_line": {
  42      "type": "PATTERN",
  43      "value": "#.*"
  44    },
  45    "_block": {
  46      "type": "CHOICE",
  47      "members": [
  48        {
  49          "type": "SEQ",
  50          "members": [
  51            {
  52              "type": "REPEAT1",
  53              "content": {
  54                "type": "SYMBOL",
  55                "name": "statement"
  56              }
  57            },
  58            {
  59              "type": "CHOICE",
  60              "members": [
  61                {
  62                  "type": "SYMBOL",
  63                  "name": "return_statement"
  64                },
  65                {
  66                  "type": "BLANK"
  67                }
  68              ]
  69            }
  70          ]
  71        },
  72        {
  73          "type": "SEQ",
  74          "members": [
  75            {
  76              "type": "REPEAT",
  77              "content": {
  78                "type": "SYMBOL",
  79                "name": "statement"
  80              }
  81            },
  82            {
  83              "type": "SYMBOL",
  84              "name": "return_statement"
  85            }
  86          ]
  87        }
  88      ]
  89    },
  90    "statement": {
  91      "type": "CHOICE",
  92      "members": [
  93        {
  94          "type": "SYMBOL",
  95          "name": "empty_statement"
  96        },
  97        {
  98          "type": "SYMBOL",
  99          "name": "assignment_statement"
 100        },
 101        {
 102          "type": "SYMBOL",
 103          "name": "function_call"
 104        },
 105        {
 106          "type": "SYMBOL",
 107          "name": "label_statement"
 108        },
 109        {
 110          "type": "SYMBOL",
 111          "name": "break_statement"
 112        },
 113        {
 114          "type": "SYMBOL",
 115          "name": "goto_statement"
 116        },
 117        {
 118          "type": "SYMBOL",
 119          "name": "do_statement"
 120        },
 121        {
 122          "type": "SYMBOL",
 123          "name": "while_statement"
 124        },
 125        {
 126          "type": "SYMBOL",
 127          "name": "repeat_statement"
 128        },
 129        {
 130          "type": "SYMBOL",
 131          "name": "if_statement"
 132        },
 133        {
 134          "type": "SYMBOL",
 135          "name": "for_statement"
 136        },
 137        {
 138          "type": "SYMBOL",
 139          "name": "declaration"
 140        }
 141      ]
 142    },
 143    "return_statement": {
 144      "type": "SEQ",
 145      "members": [
 146        {
 147          "type": "STRING",
 148          "value": "return"
 149        },
 150        {
 151          "type": "CHOICE",
 152          "members": [
 153            {
 154              "type": "ALIAS",
 155              "content": {
 156                "type": "SYMBOL",
 157                "name": "_expression_list"
 158              },
 159              "named": true,
 160              "value": "expression_list"
 161            },
 162            {
 163              "type": "BLANK"
 164            }
 165          ]
 166        },
 167        {
 168          "type": "CHOICE",
 169          "members": [
 170            {
 171              "type": "STRING",
 172              "value": ";"
 173            },
 174            {
 175              "type": "BLANK"
 176            }
 177          ]
 178        }
 179      ]
 180    },
 181    "empty_statement": {
 182      "type": "STRING",
 183      "value": ";"
 184    },
 185    "assignment_statement": {
 186      "type": "SEQ",
 187      "members": [
 188        {
 189          "type": "ALIAS",
 190          "content": {
 191            "type": "SYMBOL",
 192            "name": "_variable_assignment_varlist"
 193          },
 194          "named": true,
 195          "value": "variable_list"
 196        },
 197        {
 198          "type": "STRING",
 199          "value": "="
 200        },
 201        {
 202          "type": "ALIAS",
 203          "content": {
 204            "type": "SYMBOL",
 205            "name": "_variable_assignment_explist"
 206          },
 207          "named": true,
 208          "value": "expression_list"
 209        }
 210      ]
 211    },
 212    "_variable_assignment_varlist": {
 213      "type": "SEQ",
 214      "members": [
 215        {
 216          "type": "FIELD",
 217          "name": "name",
 218          "content": {
 219            "type": "SYMBOL",
 220            "name": "variable"
 221          }
 222        },
 223        {
 224          "type": "REPEAT",
 225          "content": {
 226            "type": "SEQ",
 227            "members": [
 228              {
 229                "type": "STRING",
 230                "value": ","
 231              },
 232              {
 233                "type": "FIELD",
 234                "name": "name",
 235                "content": {
 236                  "type": "SYMBOL",
 237                  "name": "variable"
 238                }
 239              }
 240            ]
 241          }
 242        }
 243      ]
 244    },
 245    "_variable_assignment_explist": {
 246      "type": "SEQ",
 247      "members": [
 248        {
 249          "type": "FIELD",
 250          "name": "value",
 251          "content": {
 252            "type": "SYMBOL",
 253            "name": "expression"
 254          }
 255        },
 256        {
 257          "type": "REPEAT",
 258          "content": {
 259            "type": "SEQ",
 260            "members": [
 261              {
 262                "type": "STRING",
 263                "value": ","
 264              },
 265              {
 266                "type": "FIELD",
 267                "name": "value",
 268                "content": {
 269                  "type": "SYMBOL",
 270                  "name": "expression"
 271                }
 272              }
 273            ]
 274          }
 275        }
 276      ]
 277    },
 278    "label_statement": {
 279      "type": "SEQ",
 280      "members": [
 281        {
 282          "type": "STRING",
 283          "value": "::"
 284        },
 285        {
 286          "type": "SYMBOL",
 287          "name": "identifier"
 288        },
 289        {
 290          "type": "STRING",
 291          "value": "::"
 292        }
 293      ]
 294    },
 295    "break_statement": {
 296      "type": "STRING",
 297      "value": "break"
 298    },
 299    "goto_statement": {
 300      "type": "SEQ",
 301      "members": [
 302        {
 303          "type": "STRING",
 304          "value": "goto"
 305        },
 306        {
 307          "type": "SYMBOL",
 308          "name": "identifier"
 309        }
 310      ]
 311    },
 312    "do_statement": {
 313      "type": "SEQ",
 314      "members": [
 315        {
 316          "type": "STRING",
 317          "value": "do"
 318        },
 319        {
 320          "type": "FIELD",
 321          "name": "body",
 322          "content": {
 323            "type": "ALIAS",
 324            "content": {
 325              "type": "CHOICE",
 326              "members": [
 327                {
 328                  "type": "SYMBOL",
 329                  "name": "_block"
 330                },
 331                {
 332                  "type": "BLANK"
 333                }
 334              ]
 335            },
 336            "named": true,
 337            "value": "block"
 338          }
 339        },
 340        {
 341          "type": "STRING",
 342          "value": "end"
 343        }
 344      ]
 345    },
 346    "while_statement": {
 347      "type": "SEQ",
 348      "members": [
 349        {
 350          "type": "STRING",
 351          "value": "while"
 352        },
 353        {
 354          "type": "FIELD",
 355          "name": "condition",
 356          "content": {
 357            "type": "SYMBOL",
 358            "name": "expression"
 359          }
 360        },
 361        {
 362          "type": "STRING",
 363          "value": "do"
 364        },
 365        {
 366          "type": "FIELD",
 367          "name": "body",
 368          "content": {
 369            "type": "ALIAS",
 370            "content": {
 371              "type": "CHOICE",
 372              "members": [
 373                {
 374                  "type": "SYMBOL",
 375                  "name": "_block"
 376                },
 377                {
 378                  "type": "BLANK"
 379                }
 380              ]
 381            },
 382            "named": true,
 383            "value": "block"
 384          }
 385        },
 386        {
 387          "type": "STRING",
 388          "value": "end"
 389        }
 390      ]
 391    },
 392    "repeat_statement": {
 393      "type": "SEQ",
 394      "members": [
 395        {
 396          "type": "STRING",
 397          "value": "repeat"
 398        },
 399        {
 400          "type": "FIELD",
 401          "name": "body",
 402          "content": {
 403            "type": "ALIAS",
 404            "content": {
 405              "type": "CHOICE",
 406              "members": [
 407                {
 408                  "type": "SYMBOL",
 409                  "name": "_block"
 410                },
 411                {
 412                  "type": "BLANK"
 413                }
 414              ]
 415            },
 416            "named": true,
 417            "value": "block"
 418          }
 419        },
 420        {
 421          "type": "STRING",
 422          "value": "until"
 423        },
 424        {
 425          "type": "FIELD",
 426          "name": "condition",
 427          "content": {
 428            "type": "SYMBOL",
 429            "name": "expression"
 430          }
 431        }
 432      ]
 433    },
 434    "if_statement": {
 435      "type": "SEQ",
 436      "members": [
 437        {
 438          "type": "STRING",
 439          "value": "if"
 440        },
 441        {
 442          "type": "FIELD",
 443          "name": "condition",
 444          "content": {
 445            "type": "SYMBOL",
 446            "name": "expression"
 447          }
 448        },
 449        {
 450          "type": "STRING",
 451          "value": "then"
 452        },
 453        {
 454          "type": "FIELD",
 455          "name": "consequence",
 456          "content": {
 457            "type": "ALIAS",
 458            "content": {
 459              "type": "CHOICE",
 460              "members": [
 461                {
 462                  "type": "SYMBOL",
 463                  "name": "_block"
 464                },
 465                {
 466                  "type": "BLANK"
 467                }
 468              ]
 469            },
 470            "named": true,
 471            "value": "block"
 472          }
 473        },
 474        {
 475          "type": "REPEAT",
 476          "content": {
 477            "type": "FIELD",
 478            "name": "alternative",
 479            "content": {
 480              "type": "SYMBOL",
 481              "name": "elseif_statement"
 482            }
 483          }
 484        },
 485        {
 486          "type": "CHOICE",
 487          "members": [
 488            {
 489              "type": "FIELD",
 490              "name": "alternative",
 491              "content": {
 492                "type": "SYMBOL",
 493                "name": "else_statement"
 494              }
 495            },
 496            {
 497              "type": "BLANK"
 498            }
 499          ]
 500        },
 501        {
 502          "type": "STRING",
 503          "value": "end"
 504        }
 505      ]
 506    },
 507    "elseif_statement": {
 508      "type": "SEQ",
 509      "members": [
 510        {
 511          "type": "STRING",
 512          "value": "elseif"
 513        },
 514        {
 515          "type": "FIELD",
 516          "name": "condition",
 517          "content": {
 518            "type": "SYMBOL",
 519            "name": "expression"
 520          }
 521        },
 522        {
 523          "type": "STRING",
 524          "value": "then"
 525        },
 526        {
 527          "type": "FIELD",
 528          "name": "consequence",
 529          "content": {
 530            "type": "ALIAS",
 531            "content": {
 532              "type": "CHOICE",
 533              "members": [
 534                {
 535                  "type": "SYMBOL",
 536                  "name": "_block"
 537                },
 538                {
 539                  "type": "BLANK"
 540                }
 541              ]
 542            },
 543            "named": true,
 544            "value": "block"
 545          }
 546        }
 547      ]
 548    },
 549    "else_statement": {
 550      "type": "SEQ",
 551      "members": [
 552        {
 553          "type": "STRING",
 554          "value": "else"
 555        },
 556        {
 557          "type": "FIELD",
 558          "name": "body",
 559          "content": {
 560            "type": "ALIAS",
 561            "content": {
 562              "type": "CHOICE",
 563              "members": [
 564                {
 565                  "type": "SYMBOL",
 566                  "name": "_block"
 567                },
 568                {
 569                  "type": "BLANK"
 570                }
 571              ]
 572            },
 573            "named": true,
 574            "value": "block"
 575          }
 576        }
 577      ]
 578    },
 579    "for_statement": {
 580      "type": "SEQ",
 581      "members": [
 582        {
 583          "type": "STRING",
 584          "value": "for"
 585        },
 586        {
 587          "type": "FIELD",
 588          "name": "clause",
 589          "content": {
 590            "type": "CHOICE",
 591            "members": [
 592              {
 593                "type": "SYMBOL",
 594                "name": "for_generic_clause"
 595              },
 596              {
 597                "type": "SYMBOL",
 598                "name": "for_numeric_clause"
 599              }
 600            ]
 601          }
 602        },
 603        {
 604          "type": "STRING",
 605          "value": "do"
 606        },
 607        {
 608          "type": "FIELD",
 609          "name": "body",
 610          "content": {
 611            "type": "ALIAS",
 612            "content": {
 613              "type": "CHOICE",
 614              "members": [
 615                {
 616                  "type": "SYMBOL",
 617                  "name": "_block"
 618                },
 619                {
 620                  "type": "BLANK"
 621                }
 622              ]
 623            },
 624            "named": true,
 625            "value": "block"
 626          }
 627        },
 628        {
 629          "type": "STRING",
 630          "value": "end"
 631        }
 632      ]
 633    },
 634    "for_generic_clause": {
 635      "type": "SEQ",
 636      "members": [
 637        {
 638          "type": "ALIAS",
 639          "content": {
 640            "type": "SYMBOL",
 641            "name": "_name_list"
 642          },
 643          "named": true,
 644          "value": "variable_list"
 645        },
 646        {
 647          "type": "STRING",
 648          "value": "in"
 649        },
 650        {
 651          "type": "ALIAS",
 652          "content": {
 653            "type": "SYMBOL",
 654            "name": "_expression_list"
 655          },
 656          "named": true,
 657          "value": "expression_list"
 658        }
 659      ]
 660    },
 661    "for_numeric_clause": {
 662      "type": "SEQ",
 663      "members": [
 664        {
 665          "type": "FIELD",
 666          "name": "name",
 667          "content": {
 668            "type": "SYMBOL",
 669            "name": "identifier"
 670          }
 671        },
 672        {
 673          "type": "STRING",
 674          "value": "="
 675        },
 676        {
 677          "type": "FIELD",
 678          "name": "start",
 679          "content": {
 680            "type": "SYMBOL",
 681            "name": "expression"
 682          }
 683        },
 684        {
 685          "type": "STRING",
 686          "value": ","
 687        },
 688        {
 689          "type": "FIELD",
 690          "name": "end",
 691          "content": {
 692            "type": "SYMBOL",
 693            "name": "expression"
 694          }
 695        },
 696        {
 697          "type": "CHOICE",
 698          "members": [
 699            {
 700              "type": "SEQ",
 701              "members": [
 702                {
 703                  "type": "STRING",
 704                  "value": ","
 705                },
 706                {
 707                  "type": "FIELD",
 708                  "name": "step",
 709                  "content": {
 710                    "type": "SYMBOL",
 711                    "name": "expression"
 712                  }
 713                }
 714              ]
 715            },
 716            {
 717              "type": "BLANK"
 718            }
 719          ]
 720        }
 721      ]
 722    },
 723    "declaration": {
 724      "type": "CHOICE",
 725      "members": [
 726        {
 727          "type": "SYMBOL",
 728          "name": "function_declaration"
 729        },
 730        {
 731          "type": "FIELD",
 732          "name": "local_declaration",
 733          "content": {
 734            "type": "ALIAS",
 735            "content": {
 736              "type": "SYMBOL",
 737              "name": "_local_function_declaration"
 738            },
 739            "named": true,
 740            "value": "function_declaration"
 741          }
 742        },
 743        {
 744          "type": "FIELD",
 745          "name": "local_declaration",
 746          "content": {
 747            "type": "SYMBOL",
 748            "name": "variable_declaration"
 749          }
 750        }
 751      ]
 752    },
 753    "function_declaration": {
 754      "type": "SEQ",
 755      "members": [
 756        {
 757          "type": "STRING",
 758          "value": "function"
 759        },
 760        {
 761          "type": "FIELD",
 762          "name": "name",
 763          "content": {
 764            "type": "SYMBOL",
 765            "name": "_function_name"
 766          }
 767        },
 768        {
 769          "type": "SYMBOL",
 770          "name": "_function_body"
 771        }
 772      ]
 773    },
 774    "_local_function_declaration": {
 775      "type": "SEQ",
 776      "members": [
 777        {
 778          "type": "STRING",
 779          "value": "local"
 780        },
 781        {
 782          "type": "STRING",
 783          "value": "function"
 784        },
 785        {
 786          "type": "FIELD",
 787          "name": "name",
 788          "content": {
 789            "type": "SYMBOL",
 790            "name": "identifier"
 791          }
 792        },
 793        {
 794          "type": "SYMBOL",
 795          "name": "_function_body"
 796        }
 797      ]
 798    },
 799    "_function_name": {
 800      "type": "CHOICE",
 801      "members": [
 802        {
 803          "type": "SYMBOL",
 804          "name": "_function_name_prefix_expression"
 805        },
 806        {
 807          "type": "ALIAS",
 808          "content": {
 809            "type": "SYMBOL",
 810            "name": "_function_name_method_index_expression"
 811          },
 812          "named": true,
 813          "value": "method_index_expression"
 814        }
 815      ]
 816    },
 817    "_function_name_prefix_expression": {
 818      "type": "CHOICE",
 819      "members": [
 820        {
 821          "type": "SYMBOL",
 822          "name": "identifier"
 823        },
 824        {
 825          "type": "ALIAS",
 826          "content": {
 827            "type": "SYMBOL",
 828            "name": "_function_name_dot_index_expression"
 829          },
 830          "named": true,
 831          "value": "dot_index_expression"
 832        }
 833      ]
 834    },
 835    "_function_name_dot_index_expression": {
 836      "type": "SEQ",
 837      "members": [
 838        {
 839          "type": "FIELD",
 840          "name": "table",
 841          "content": {
 842            "type": "SYMBOL",
 843            "name": "_function_name_prefix_expression"
 844          }
 845        },
 846        {
 847          "type": "STRING",
 848          "value": "."
 849        },
 850        {
 851          "type": "FIELD",
 852          "name": "field",
 853          "content": {
 854            "type": "SYMBOL",
 855            "name": "identifier"
 856          }
 857        }
 858      ]
 859    },
 860    "_function_name_method_index_expression": {
 861      "type": "SEQ",
 862      "members": [
 863        {
 864          "type": "FIELD",
 865          "name": "table",
 866          "content": {
 867            "type": "SYMBOL",
 868            "name": "_function_name_prefix_expression"
 869          }
 870        },
 871        {
 872          "type": "STRING",
 873          "value": ":"
 874        },
 875        {
 876          "type": "FIELD",
 877          "name": "method",
 878          "content": {
 879            "type": "SYMBOL",
 880            "name": "identifier"
 881          }
 882        }
 883      ]
 884    },
 885    "variable_declaration": {
 886      "type": "SEQ",
 887      "members": [
 888        {
 889          "type": "STRING",
 890          "value": "local"
 891        },
 892        {
 893          "type": "CHOICE",
 894          "members": [
 895            {
 896              "type": "ALIAS",
 897              "content": {
 898                "type": "SYMBOL",
 899                "name": "_att_name_list"
 900              },
 901              "named": true,
 902              "value": "variable_list"
 903            },
 904            {
 905              "type": "ALIAS",
 906              "content": {
 907                "type": "SYMBOL",
 908                "name": "_local_variable_assignment"
 909              },
 910              "named": true,
 911              "value": "assignment_statement"
 912            }
 913          ]
 914        }
 915      ]
 916    },
 917    "_local_variable_assignment": {
 918      "type": "SEQ",
 919      "members": [
 920        {
 921          "type": "ALIAS",
 922          "content": {
 923            "type": "SYMBOL",
 924            "name": "_att_name_list"
 925          },
 926          "named": true,
 927          "value": "variable_list"
 928        },
 929        {
 930          "type": "STRING",
 931          "value": "="
 932        },
 933        {
 934          "type": "ALIAS",
 935          "content": {
 936            "type": "SYMBOL",
 937            "name": "_variable_assignment_explist"
 938          },
 939          "named": true,
 940          "value": "expression_list"
 941        }
 942      ]
 943    },
 944    "_name_list": {
 945      "type": "SEQ",
 946      "members": [
 947        {
 948          "type": "FIELD",
 949          "name": "name",
 950          "content": {
 951            "type": "SYMBOL",
 952            "name": "identifier"
 953          }
 954        },
 955        {
 956          "type": "REPEAT",
 957          "content": {
 958            "type": "SEQ",
 959            "members": [
 960              {
 961                "type": "STRING",
 962                "value": ","
 963              },
 964              {
 965                "type": "FIELD",
 966                "name": "name",
 967                "content": {
 968                  "type": "SYMBOL",
 969                  "name": "identifier"
 970                }
 971              }
 972            ]
 973          }
 974        }
 975      ]
 976    },
 977    "_att_name_list": {
 978      "type": "SEQ",
 979      "members": [
 980        {
 981          "type": "SEQ",
 982          "members": [
 983            {
 984              "type": "FIELD",
 985              "name": "name",
 986              "content": {
 987                "type": "SYMBOL",
 988                "name": "identifier"
 989              }
 990            },
 991            {
 992              "type": "CHOICE",
 993              "members": [
 994                {
 995                  "type": "FIELD",
 996                  "name": "attribute",
 997                  "content": {
 998                    "type": "ALIAS",
 999                    "content": {
1000                      "type": "SYMBOL",
1001                      "name": "_attrib"
1002                    },
1003                    "named": true,
1004                    "value": "attribute"
1005                  }
1006                },
1007                {
1008                  "type": "BLANK"
1009                }
1010              ]
1011            }
1012          ]
1013        },
1014        {
1015          "type": "REPEAT",
1016          "content": {
1017            "type": "SEQ",
1018            "members": [
1019              {
1020                "type": "STRING",
1021                "value": ","
1022              },
1023              {
1024                "type": "SEQ",
1025                "members": [
1026                  {
1027                    "type": "FIELD",
1028                    "name": "name",
1029                    "content": {
1030                      "type": "SYMBOL",
1031                      "name": "identifier"
1032                    }
1033                  },
1034                  {
1035                    "type": "CHOICE",
1036                    "members": [
1037                      {
1038                        "type": "FIELD",
1039                        "name": "attribute",
1040                        "content": {
1041                          "type": "ALIAS",
1042                          "content": {
1043                            "type": "SYMBOL",
1044                            "name": "_attrib"
1045                          },
1046                          "named": true,
1047                          "value": "attribute"
1048                        }
1049                      },
1050                      {
1051                        "type": "BLANK"
1052                      }
1053                    ]
1054                  }
1055                ]
1056              }
1057            ]
1058          }
1059        }
1060      ]
1061    },
1062    "_attrib": {
1063      "type": "SEQ",
1064      "members": [
1065        {
1066          "type": "STRING",
1067          "value": "<"
1068        },
1069        {
1070          "type": "SYMBOL",
1071          "name": "identifier"
1072        },
1073        {
1074          "type": "STRING",
1075          "value": ">"
1076        }
1077      ]
1078    },
1079    "_expression_list": {
1080      "type": "SEQ",
1081      "members": [
1082        {
1083          "type": "SYMBOL",
1084          "name": "expression"
1085        },
1086        {
1087          "type": "REPEAT",
1088          "content": {
1089            "type": "SEQ",
1090            "members": [
1091              {
1092                "type": "STRING",
1093                "value": ","
1094              },
1095              {
1096                "type": "SYMBOL",
1097                "name": "expression"
1098              }
1099            ]
1100          }
1101        }
1102      ]
1103    },
1104    "expression": {
1105      "type": "CHOICE",
1106      "members": [
1107        {
1108          "type": "SYMBOL",
1109          "name": "nil"
1110        },
1111        {
1112          "type": "SYMBOL",
1113          "name": "false"
1114        },
1115        {
1116          "type": "SYMBOL",
1117          "name": "true"
1118        },
1119        {
1120          "type": "SYMBOL",
1121          "name": "number"
1122        },
1123        {
1124          "type": "SYMBOL",
1125          "name": "string"
1126        },
1127        {
1128          "type": "SYMBOL",
1129          "name": "vararg_expression"
1130        },
1131        {
1132          "type": "SYMBOL",
1133          "name": "function_definition"
1134        },
1135        {
1136          "type": "SYMBOL",
1137          "name": "variable"
1138        },
1139        {
1140          "type": "SYMBOL",
1141          "name": "function_call"
1142        },
1143        {
1144          "type": "SYMBOL",
1145          "name": "parenthesized_expression"
1146        },
1147        {
1148          "type": "SYMBOL",
1149          "name": "table_constructor"
1150        },
1151        {
1152          "type": "SYMBOL",
1153          "name": "binary_expression"
1154        },
1155        {
1156          "type": "SYMBOL",
1157          "name": "unary_expression"
1158        }
1159      ]
1160    },
1161    "nil": {
1162      "type": "STRING",
1163      "value": "nil"
1164    },
1165    "false": {
1166      "type": "STRING",
1167      "value": "false"
1168    },
1169    "true": {
1170      "type": "STRING",
1171      "value": "true"
1172    },
1173    "number": {
1174      "type": "TOKEN",
1175      "content": {
1176        "type": "CHOICE",
1177        "members": [
1178          {
1179            "type": "CHOICE",
1180            "members": [
1181              {
1182                "type": "SEQ",
1183                "members": [
1184                  {
1185                    "type": "PATTERN",
1186                    "value": "[0-9]+"
1187                  },
1188                  {
1189                    "type": "PATTERN",
1190                    "value": "U?LL",
1191                    "flags": "i"
1192                  }
1193                ]
1194              },
1195              {
1196                "type": "SEQ",
1197                "members": [
1198                  {
1199                    "type": "CHOICE",
1200                    "members": [
1201                      {
1202                        "type": "SEQ",
1203                        "members": [
1204                          {
1205                            "type": "CHOICE",
1206                            "members": [
1207                              {
1208                                "type": "PATTERN",
1209                                "value": "[0-9]+"
1210                              },
1211                              {
1212                                "type": "BLANK"
1213                              }
1214                            ]
1215                          },
1216                          {
1217                            "type": "CHOICE",
1218                            "members": [
1219                              {
1220                                "type": "STRING",
1221                                "value": "."
1222                              },
1223                              {
1224                                "type": "BLANK"
1225                              }
1226                            ]
1227                          },
1228                          {
1229                            "type": "PATTERN",
1230                            "value": "[0-9]+"
1231                          }
1232                        ]
1233                      },
1234                      {
1235                        "type": "SEQ",
1236                        "members": [
1237                          {
1238                            "type": "PATTERN",
1239                            "value": "[0-9]+"
1240                          },
1241                          {
1242                            "type": "CHOICE",
1243                            "members": [
1244                              {
1245                                "type": "STRING",
1246                                "value": "."
1247                              },
1248                              {
1249                                "type": "BLANK"
1250                              }
1251                            ]
1252                          },
1253                          {
1254                            "type": "CHOICE",
1255                            "members": [
1256                              {
1257                                "type": "PATTERN",
1258                                "value": "[0-9]+"
1259                              },
1260                              {
1261                                "type": "BLANK"
1262                              }
1263                            ]
1264                          }
1265                        ]
1266                      }
1267                    ]
1268                  },
1269                  {
1270                    "type": "CHOICE",
1271                    "members": [
1272                      {
1273                        "type": "SEQ",
1274                        "members": [
1275                          {
1276                            "type": "CHOICE",
1277                            "members": [
1278                              {
1279                                "type": "STRING",
1280                                "value": "e"
1281                              },
1282                              {
1283                                "type": "STRING",
1284                                "value": "E"
1285                              }
1286                            ]
1287                          },
1288                          {
1289                            "type": "SEQ",
1290                            "members": [
1291                              {
1292                                "type": "CHOICE",
1293                                "members": [
1294                                  {
1295                                    "type": "CHOICE",
1296                                    "members": [
1297                                      {
1298                                        "type": "STRING",
1299                                        "value": "-"
1300                                      },
1301                                      {
1302                                        "type": "STRING",
1303                                        "value": "+"
1304                                      }
1305                                    ]
1306                                  },
1307                                  {
1308                                    "type": "BLANK"
1309                                  }
1310                                ]
1311                              },
1312                              {
1313                                "type": "PATTERN",
1314                                "value": "[0-9]+"
1315                              }
1316                            ]
1317                          }
1318                        ]
1319                      },
1320                      {
1321                        "type": "BLANK"
1322                      }
1323                    ]
1324                  },
1325                  {
1326                    "type": "CHOICE",
1327                    "members": [
1328                      {
1329                        "type": "CHOICE",
1330                        "members": [
1331                          {
1332                            "type": "STRING",
1333                            "value": "i"
1334                          },
1335                          {
1336                            "type": "STRING",
1337                            "value": "I"
1338                          }
1339                        ]
1340                      },
1341                      {
1342                        "type": "BLANK"
1343                      }
1344                    ]
1345                  }
1346                ]
1347              }
1348            ]
1349          },
1350          {
1351            "type": "SEQ",
1352            "members": [
1353              {
1354                "type": "CHOICE",
1355                "members": [
1356                  {
1357                    "type": "STRING",
1358                    "value": "0x"
1359                  },
1360                  {
1361                    "type": "STRING",
1362                    "value": "0X"
1363                  }
1364                ]
1365              },
1366              {
1367                "type": "CHOICE",
1368                "members": [
1369                  {
1370                    "type": "SEQ",
1371                    "members": [
1372                      {
1373                        "type": "PATTERN",
1374                        "value": "[a-fA-F0-9]+"
1375                      },
1376                      {
1377                        "type": "PATTERN",
1378                        "value": "U?LL",
1379                        "flags": "i"
1380                      }
1381                    ]
1382                  },
1383                  {
1384                    "type": "SEQ",
1385                    "members": [
1386                      {
1387                        "type": "CHOICE",
1388                        "members": [
1389                          {
1390                            "type": "SEQ",
1391                            "members": [
1392                              {
1393                                "type": "CHOICE",
1394                                "members": [
1395                                  {
1396                                    "type": "PATTERN",
1397                                    "value": "[a-fA-F0-9]+"
1398                                  },
1399                                  {
1400                                    "type": "BLANK"
1401                                  }
1402                                ]
1403                              },
1404                              {
1405                                "type": "CHOICE",
1406                                "members": [
1407                                  {
1408                                    "type": "STRING",
1409                                    "value": "."
1410                                  },
1411                                  {
1412                                    "type": "BLANK"
1413                                  }
1414                                ]
1415                              },
1416                              {
1417                                "type": "PATTERN",
1418                                "value": "[a-fA-F0-9]+"
1419                              }
1420                            ]
1421                          },
1422                          {
1423                            "type": "SEQ",
1424                            "members": [
1425                              {
1426                                "type": "PATTERN",
1427                                "value": "[a-fA-F0-9]+"
1428                              },
1429                              {
1430                                "type": "CHOICE",
1431                                "members": [
1432                                  {
1433                                    "type": "STRING",
1434                                    "value": "."
1435                                  },
1436                                  {
1437                                    "type": "BLANK"
1438                                  }
1439                                ]
1440                              },
1441                              {
1442                                "type": "CHOICE",
1443                                "members": [
1444                                  {
1445                                    "type": "PATTERN",
1446                                    "value": "[a-fA-F0-9]+"
1447                                  },
1448                                  {
1449                                    "type": "BLANK"
1450                                  }
1451                                ]
1452                              }
1453                            ]
1454                          }
1455                        ]
1456                      },
1457                      {
1458                        "type": "CHOICE",
1459                        "members": [
1460                          {
1461                            "type": "SEQ",
1462                            "members": [
1463                              {
1464                                "type": "CHOICE",
1465                                "members": [
1466                                  {
1467                                    "type": "STRING",
1468                                    "value": "p"
1469                                  },
1470                                  {
1471                                    "type": "STRING",
1472                                    "value": "P"
1473                                  }
1474                                ]
1475                              },
1476                              {
1477                                "type": "SEQ",
1478                                "members": [
1479                                  {
1480                                    "type": "CHOICE",
1481                                    "members": [
1482                                      {
1483                                        "type": "CHOICE",
1484                                        "members": [
1485                                          {
1486                                            "type": "STRING",
1487                                            "value": "-"
1488                                          },
1489                                          {
1490                                            "type": "STRING",
1491                                            "value": "+"
1492                                          }
1493                                        ]
1494                                      },
1495                                      {
1496                                        "type": "BLANK"
1497                                      }
1498                                    ]
1499                                  },
1500                                  {
1501                                    "type": "PATTERN",
1502                                    "value": "[0-9]+"
1503                                  }
1504                                ]
1505                              }
1506                            ]
1507                          },
1508                          {
1509                            "type": "BLANK"
1510                          }
1511                        ]
1512                      },
1513                      {
1514                        "type": "CHOICE",
1515                        "members": [
1516                          {
1517                            "type": "CHOICE",
1518                            "members": [
1519                              {
1520                                "type": "STRING",
1521                                "value": "i"
1522                              },
1523                              {
1524                                "type": "STRING",
1525                                "value": "I"
1526                              }
1527                            ]
1528                          },
1529                          {
1530                            "type": "BLANK"
1531                          }
1532                        ]
1533                      }
1534                    ]
1535                  }
1536                ]
1537              }
1538            ]
1539          }
1540        ]
1541      }
1542    },
1543    "string": {
1544      "type": "CHOICE",
1545      "members": [
1546        {
1547          "type": "SYMBOL",
1548          "name": "_quote_string"
1549        },
1550        {
1551          "type": "SYMBOL",
1552          "name": "_block_string"
1553        }
1554      ]
1555    },
1556    "_quote_string": {
1557      "type": "CHOICE",
1558      "members": [
1559        {
1560          "type": "SEQ",
1561          "members": [
1562            {
1563              "type": "FIELD",
1564              "name": "start",
1565              "content": {
1566                "type": "ALIAS",
1567                "content": {
1568                  "type": "STRING",
1569                  "value": "\""
1570                },
1571                "named": false,
1572                "value": "\""
1573              }
1574            },
1575            {
1576              "type": "FIELD",
1577              "name": "content",
1578              "content": {
1579                "type": "CHOICE",
1580                "members": [
1581                  {
1582                    "type": "ALIAS",
1583                    "content": {
1584                      "type": "SYMBOL",
1585                      "name": "_doublequote_string_content"
1586                    },
1587                    "named": true,
1588                    "value": "string_content"
1589                  },
1590                  {
1591                    "type": "BLANK"
1592                  }
1593                ]
1594              }
1595            },
1596            {
1597              "type": "FIELD",
1598              "name": "end",
1599              "content": {
1600                "type": "ALIAS",
1601                "content": {
1602                  "type": "STRING",
1603                  "value": "\""
1604                },
1605                "named": false,
1606                "value": "\""
1607              }
1608            }
1609          ]
1610        },
1611        {
1612          "type": "SEQ",
1613          "members": [
1614            {
1615              "type": "FIELD",
1616              "name": "start",
1617              "content": {
1618                "type": "ALIAS",
1619                "content": {
1620                  "type": "STRING",
1621                  "value": "'"
1622                },
1623                "named": false,
1624                "value": "'"
1625              }
1626            },
1627            {
1628              "type": "FIELD",
1629              "name": "content",
1630              "content": {
1631                "type": "CHOICE",
1632                "members": [
1633                  {
1634                    "type": "ALIAS",
1635                    "content": {
1636                      "type": "SYMBOL",
1637                      "name": "_singlequote_string_content"
1638                    },
1639                    "named": true,
1640                    "value": "string_content"
1641                  },
1642                  {
1643                    "type": "BLANK"
1644                  }
1645                ]
1646              }
1647            },
1648            {
1649              "type": "FIELD",
1650              "name": "end",
1651              "content": {
1652                "type": "ALIAS",
1653                "content": {
1654                  "type": "STRING",
1655                  "value": "'"
1656                },
1657                "named": false,
1658                "value": "'"
1659              }
1660            }
1661          ]
1662        }
1663      ]
1664    },
1665    "_doublequote_string_content": {
1666      "type": "REPEAT1",
1667      "content": {
1668        "type": "CHOICE",
1669        "members": [
1670          {
1671            "type": "IMMEDIATE_TOKEN",
1672            "content": {
1673              "type": "PREC",
1674              "value": 1,
1675              "content": {
1676                "type": "PATTERN",
1677                "value": "[^\"\\\\]+"
1678              }
1679            }
1680          },
1681          {
1682            "type": "SYMBOL",
1683            "name": "escape_sequence"
1684          }
1685        ]
1686      }
1687    },
1688    "_singlequote_string_content": {
1689      "type": "REPEAT1",
1690      "content": {
1691        "type": "CHOICE",
1692        "members": [
1693          {
1694            "type": "IMMEDIATE_TOKEN",
1695            "content": {
1696              "type": "PREC",
1697              "value": 1,
1698              "content": {
1699                "type": "PATTERN",
1700                "value": "[^'\\\\]+"
1701              }
1702            }
1703          },
1704          {
1705            "type": "SYMBOL",
1706            "name": "escape_sequence"
1707          }
1708        ]
1709      }
1710    },
1711    "_block_string": {
1712      "type": "SEQ",
1713      "members": [
1714        {
1715          "type": "FIELD",
1716          "name": "start",
1717          "content": {
1718            "type": "ALIAS",
1719            "content": {
1720              "type": "SYMBOL",
1721              "name": "_block_string_start"
1722            },
1723            "named": false,
1724            "value": "[["
1725          }
1726        },
1727        {
1728          "type": "FIELD",
1729          "name": "content",
1730          "content": {
1731            "type": "ALIAS",
1732            "content": {
1733              "type": "SYMBOL",
1734              "name": "_block_string_content"
1735            },
1736            "named": true,
1737            "value": "string_content"
1738          }
1739        },
1740        {
1741          "type": "FIELD",
1742          "name": "end",
1743          "content": {
1744            "type": "ALIAS",
1745            "content": {
1746              "type": "SYMBOL",
1747              "name": "_block_string_end"
1748            },
1749            "named": false,
1750            "value": "]]"
1751          }
1752        }
1753      ]
1754    },
1755    "escape_sequence": {
1756      "type": "IMMEDIATE_TOKEN",
1757      "content": {
1758        "type": "SEQ",
1759        "members": [
1760          {
1761            "type": "STRING",
1762            "value": "\\"
1763          },
1764          {
1765            "type": "CHOICE",
1766            "members": [
1767              {
1768                "type": "PATTERN",
1769                "value": "[\\nabfnrtv\\\\'\"]"
1770              },
1771              {
1772                "type": "PATTERN",
1773                "value": "z\\s*"
1774              },
1775              {
1776                "type": "PATTERN",
1777                "value": "[0-9]{1,3}"
1778              },
1779              {
1780                "type": "PATTERN",
1781                "value": "x[0-9a-fA-F]{2}"
1782              },
1783              {
1784                "type": "PATTERN",
1785                "value": "u\\{[0-9a-fA-F]+\\}"
1786              }
1787            ]
1788          }
1789        ]
1790      }
1791    },
1792    "vararg_expression": {
1793      "type": "STRING",
1794      "value": "..."
1795    },
1796    "function_definition": {
1797      "type": "SEQ",
1798      "members": [
1799        {
1800          "type": "STRING",
1801          "value": "function"
1802        },
1803        {
1804          "type": "SYMBOL",
1805          "name": "_function_body"
1806        }
1807      ]
1808    },
1809    "_function_body": {
1810      "type": "SEQ",
1811      "members": [
1812        {
1813          "type": "FIELD",
1814          "name": "parameters",
1815          "content": {
1816            "type": "SYMBOL",
1817            "name": "parameters"
1818          }
1819        },
1820        {
1821          "type": "FIELD",
1822          "name": "body",
1823          "content": {
1824            "type": "ALIAS",
1825            "content": {
1826              "type": "CHOICE",
1827              "members": [
1828                {
1829                  "type": "SYMBOL",
1830                  "name": "_block"
1831                },
1832                {
1833                  "type": "BLANK"
1834                }
1835              ]
1836            },
1837            "named": true,
1838            "value": "block"
1839          }
1840        },
1841        {
1842          "type": "STRING",
1843          "value": "end"
1844        }
1845      ]
1846    },
1847    "parameters": {
1848      "type": "SEQ",
1849      "members": [
1850        {
1851          "type": "STRING",
1852          "value": "("
1853        },
1854        {
1855          "type": "CHOICE",
1856          "members": [
1857            {
1858              "type": "SYMBOL",
1859              "name": "_parameter_list"
1860            },
1861            {
1862              "type": "BLANK"
1863            }
1864          ]
1865        },
1866        {
1867          "type": "STRING",
1868          "value": ")"
1869        }
1870      ]
1871    },
1872    "_parameter_list": {
1873      "type": "CHOICE",
1874      "members": [
1875        {
1876          "type": "SEQ",
1877          "members": [
1878            {
1879              "type": "SEQ",
1880              "members": [
1881                {
1882                  "type": "FIELD",
1883                  "name": "name",
1884                  "content": {
1885                    "type": "SYMBOL",
1886                    "name": "identifier"
1887                  }
1888                },
1889                {
1890                  "type": "REPEAT",
1891                  "content": {
1892                    "type": "SEQ",
1893                    "members": [
1894                      {
1895                        "type": "STRING",
1896                        "value": ","
1897                      },
1898                      {
1899                        "type": "FIELD",
1900                        "name": "name",
1901                        "content": {
1902                          "type": "SYMBOL",
1903                          "name": "identifier"
1904                        }
1905                      }
1906                    ]
1907                  }
1908                }
1909              ]
1910            },
1911            {
1912              "type": "CHOICE",
1913              "members": [
1914                {
1915                  "type": "SEQ",
1916                  "members": [
1917                    {
1918                      "type": "STRING",
1919                      "value": ","
1920                    },
1921                    {
1922                      "type": "SYMBOL",
1923                      "name": "vararg_expression"
1924                    }
1925                  ]
1926                },
1927                {
1928                  "type": "BLANK"
1929                }
1930              ]
1931            }
1932          ]
1933        },
1934        {
1935          "type": "SYMBOL",
1936          "name": "vararg_expression"
1937        }
1938      ]
1939    },
1940    "_prefix_expression": {
1941      "type": "PREC",
1942      "value": 1,
1943      "content": {
1944        "type": "CHOICE",
1945        "members": [
1946          {
1947            "type": "SYMBOL",
1948            "name": "variable"
1949          },
1950          {
1951            "type": "SYMBOL",
1952            "name": "function_call"
1953          },
1954          {
1955            "type": "SYMBOL",
1956            "name": "parenthesized_expression"
1957          }
1958        ]
1959      }
1960    },
1961    "variable": {
1962      "type": "CHOICE",
1963      "members": [
1964        {
1965          "type": "SYMBOL",
1966          "name": "identifier"
1967        },
1968        {
1969          "type": "SYMBOL",
1970          "name": "bracket_index_expression"
1971        },
1972        {
1973          "type": "SYMBOL",
1974          "name": "dot_index_expression"
1975        }
1976      ]
1977    },
1978    "bracket_index_expression": {
1979      "type": "SEQ",
1980      "members": [
1981        {
1982          "type": "FIELD",
1983          "name": "table",
1984          "content": {
1985            "type": "SYMBOL",
1986            "name": "_prefix_expression"
1987          }
1988        },
1989        {
1990          "type": "STRING",
1991          "value": "["
1992        },
1993        {
1994          "type": "FIELD",
1995          "name": "field",
1996          "content": {
1997            "type": "SYMBOL",
1998            "name": "expression"
1999          }
2000        },
2001        {
2002          "type": "STRING",
2003          "value": "]"
2004        }
2005      ]
2006    },
2007    "dot_index_expression": {
2008      "type": "SEQ",
2009      "members": [
2010        {
2011          "type": "FIELD",
2012          "name": "table",
2013          "content": {
2014            "type": "SYMBOL",
2015            "name": "_prefix_expression"
2016          }
2017        },
2018        {
2019          "type": "STRING",
2020          "value": "."
2021        },
2022        {
2023          "type": "FIELD",
2024          "name": "field",
2025          "content": {
2026            "type": "SYMBOL",
2027            "name": "identifier"
2028          }
2029        }
2030      ]
2031    },
2032    "function_call": {
2033      "type": "SEQ",
2034      "members": [
2035        {
2036          "type": "FIELD",
2037          "name": "name",
2038          "content": {
2039            "type": "CHOICE",
2040            "members": [
2041              {
2042                "type": "SYMBOL",
2043                "name": "_prefix_expression"
2044              },
2045              {
2046                "type": "SYMBOL",
2047                "name": "method_index_expression"
2048              }
2049            ]
2050          }
2051        },
2052        {
2053          "type": "FIELD",
2054          "name": "arguments",
2055          "content": {
2056            "type": "SYMBOL",
2057            "name": "arguments"
2058          }
2059        }
2060      ]
2061    },
2062    "method_index_expression": {
2063      "type": "SEQ",
2064      "members": [
2065        {
2066          "type": "FIELD",
2067          "name": "table",
2068          "content": {
2069            "type": "SYMBOL",
2070            "name": "_prefix_expression"
2071          }
2072        },
2073        {
2074          "type": "STRING",
2075          "value": ":"
2076        },
2077        {
2078          "type": "FIELD",
2079          "name": "method",
2080          "content": {
2081            "type": "SYMBOL",
2082            "name": "identifier"
2083          }
2084        }
2085      ]
2086    },
2087    "arguments": {
2088      "type": "CHOICE",
2089      "members": [
2090        {
2091          "type": "SEQ",
2092          "members": [
2093            {
2094              "type": "STRING",
2095              "value": "("
2096            },
2097            {
2098              "type": "CHOICE",
2099              "members": [
2100                {
2101                  "type": "SEQ",
2102                  "members": [
2103                    {
2104                      "type": "SYMBOL",
2105                      "name": "expression"
2106                    },
2107                    {
2108                      "type": "REPEAT",
2109                      "content": {
2110                        "type": "SEQ",
2111                        "members": [
2112                          {
2113                            "type": "STRING",
2114                            "value": ","
2115                          },
2116                          {
2117                            "type": "SYMBOL",
2118                            "name": "expression"
2119                          }
2120                        ]
2121                      }
2122                    }
2123                  ]
2124                },
2125                {
2126                  "type": "BLANK"
2127                }
2128              ]
2129            },
2130            {
2131              "type": "STRING",
2132              "value": ")"
2133            }
2134          ]
2135        },
2136        {
2137          "type": "SYMBOL",
2138          "name": "table_constructor"
2139        },
2140        {
2141          "type": "SYMBOL",
2142          "name": "string"
2143        }
2144      ]
2145    },
2146    "parenthesized_expression": {
2147      "type": "SEQ",
2148      "members": [
2149        {
2150          "type": "STRING",
2151          "value": "("
2152        },
2153        {
2154          "type": "SYMBOL",
2155          "name": "expression"
2156        },
2157        {
2158          "type": "STRING",
2159          "value": ")"
2160        }
2161      ]
2162    },
2163    "table_constructor": {
2164      "type": "SEQ",
2165      "members": [
2166        {
2167          "type": "STRING",
2168          "value": "{"
2169        },
2170        {
2171          "type": "CHOICE",
2172          "members": [
2173            {
2174              "type": "SYMBOL",
2175              "name": "_field_list"
2176            },
2177            {
2178              "type": "BLANK"
2179            }
2180          ]
2181        },
2182        {
2183          "type": "STRING",
2184          "value": "}"
2185        }
2186      ]
2187    },
2188    "_field_list": {
2189      "type": "SEQ",
2190      "members": [
2191        {
2192          "type": "SYMBOL",
2193          "name": "field"
2194        },
2195        {
2196          "type": "REPEAT",
2197          "content": {
2198            "type": "SEQ",
2199            "members": [
2200              {
2201                "type": "SYMBOL",
2202                "name": "_field_sep"
2203              },
2204              {
2205                "type": "SYMBOL",
2206                "name": "field"
2207              }
2208            ]
2209          }
2210        },
2211        {
2212          "type": "CHOICE",
2213          "members": [
2214            {
2215              "type": "SYMBOL",
2216              "name": "_field_sep"
2217            },
2218            {
2219              "type": "BLANK"
2220            }
2221          ]
2222        }
2223      ]
2224    },
2225    "_field_sep": {
2226      "type": "CHOICE",
2227      "members": [
2228        {
2229          "type": "STRING",
2230          "value": ","
2231        },
2232        {
2233          "type": "STRING",
2234          "value": ";"
2235        }
2236      ]
2237    },
2238    "field": {
2239      "type": "CHOICE",
2240      "members": [
2241        {
2242          "type": "SEQ",
2243          "members": [
2244            {
2245              "type": "STRING",
2246              "value": "["
2247            },
2248            {
2249              "type": "FIELD",
2250              "name": "name",
2251              "content": {
2252                "type": "SYMBOL",
2253                "name": "expression"
2254              }
2255            },
2256            {
2257              "type": "STRING",
2258              "value": "]"
2259            },
2260            {
2261              "type": "STRING",
2262              "value": "="
2263            },
2264            {
2265              "type": "FIELD",
2266              "name": "value",
2267              "content": {
2268                "type": "SYMBOL",
2269                "name": "expression"
2270              }
2271            }
2272          ]
2273        },
2274        {
2275          "type": "SEQ",
2276          "members": [
2277            {
2278              "type": "FIELD",
2279              "name": "name",
2280              "content": {
2281                "type": "SYMBOL",
2282                "name": "identifier"
2283              }
2284            },
2285            {
2286              "type": "STRING",
2287              "value": "="
2288            },
2289            {
2290              "type": "FIELD",
2291              "name": "value",
2292              "content": {
2293                "type": "SYMBOL",
2294                "name": "expression"
2295              }
2296            }
2297          ]
2298        },
2299        {
2300          "type": "FIELD",
2301          "name": "value",
2302          "content": {
2303            "type": "SYMBOL",
2304            "name": "expression"
2305          }
2306        }
2307      ]
2308    },
2309    "binary_expression": {
2310      "type": "CHOICE",
2311      "members": [
2312        {
2313          "type": "PREC_LEFT",
2314          "value": 1,
2315          "content": {
2316            "type": "SEQ",
2317            "members": [
2318              {
2319                "type": "FIELD",
2320                "name": "left",
2321                "content": {
2322                  "type": "SYMBOL",
2323                  "name": "expression"
2324                }
2325              },
2326              {
2327                "type": "STRING",
2328                "value": "or"
2329              },
2330              {
2331                "type": "FIELD",
2332                "name": "right",
2333                "content": {
2334                  "type": "SYMBOL",
2335                  "name": "expression"
2336                }
2337              }
2338            ]
2339          }
2340        },
2341        {
2342          "type": "PREC_LEFT",
2343          "value": 2,
2344          "content": {
2345            "type": "SEQ",
2346            "members": [
2347              {
2348                "type": "FIELD",
2349                "name": "left",
2350                "content": {
2351                  "type": "SYMBOL",
2352                  "name": "expression"
2353                }
2354              },
2355              {
2356                "type": "STRING",
2357                "value": "and"
2358              },
2359              {
2360                "type": "FIELD",
2361                "name": "right",
2362                "content": {
2363                  "type": "SYMBOL",
2364                  "name": "expression"
2365                }
2366              }
2367            ]
2368          }
2369        },
2370        {
2371          "type": "PREC_LEFT",
2372          "value": 3,
2373          "content": {
2374            "type": "SEQ",
2375            "members": [
2376              {
2377                "type": "FIELD",
2378                "name": "left",
2379                "content": {
2380                  "type": "SYMBOL",
2381                  "name": "expression"
2382                }
2383              },
2384              {
2385                "type": "STRING",
2386                "value": "<"
2387              },
2388              {
2389                "type": "FIELD",
2390                "name": "right",
2391                "content": {
2392                  "type": "SYMBOL",
2393                  "name": "expression"
2394                }
2395              }
2396            ]
2397          }
2398        },
2399        {
2400          "type": "PREC_LEFT",
2401          "value": 3,
2402          "content": {
2403            "type": "SEQ",
2404            "members": [
2405              {
2406                "type": "FIELD",
2407                "name": "left",
2408                "content": {
2409                  "type": "SYMBOL",
2410                  "name": "expression"
2411                }
2412              },
2413              {
2414                "type": "STRING",
2415                "value": "<="
2416              },
2417              {
2418                "type": "FIELD",
2419                "name": "right",
2420                "content": {
2421                  "type": "SYMBOL",
2422                  "name": "expression"
2423                }
2424              }
2425            ]
2426          }
2427        },
2428        {
2429          "type": "PREC_LEFT",
2430          "value": 3,
2431          "content": {
2432            "type": "SEQ",
2433            "members": [
2434              {
2435                "type": "FIELD",
2436                "name": "left",
2437                "content": {
2438                  "type": "SYMBOL",
2439                  "name": "expression"
2440                }
2441              },
2442              {
2443                "type": "STRING",
2444                "value": "=="
2445              },
2446              {
2447                "type": "FIELD",
2448                "name": "right",
2449                "content": {
2450                  "type": "SYMBOL",
2451                  "name": "expression"
2452                }
2453              }
2454            ]
2455          }
2456        },
2457        {
2458          "type": "PREC_LEFT",
2459          "value": 3,
2460          "content": {
2461            "type": "SEQ",
2462            "members": [
2463              {
2464                "type": "FIELD",
2465                "name": "left",
2466                "content": {
2467                  "type": "SYMBOL",
2468                  "name": "expression"
2469                }
2470              },
2471              {
2472                "type": "STRING",
2473                "value": "~="
2474              },
2475              {
2476                "type": "FIELD",
2477                "name": "right",
2478                "content": {
2479                  "type": "SYMBOL",
2480                  "name": "expression"
2481                }
2482              }
2483            ]
2484          }
2485        },
2486        {
2487          "type": "PREC_LEFT",
2488          "value": 3,
2489          "content": {
2490            "type": "SEQ",
2491            "members": [
2492              {
2493                "type": "FIELD",
2494                "name": "left",
2495                "content": {
2496                  "type": "SYMBOL",
2497                  "name": "expression"
2498                }
2499              },
2500              {
2501                "type": "STRING",
2502                "value": ">="
2503              },
2504              {
2505                "type": "FIELD",
2506                "name": "right",
2507                "content": {
2508                  "type": "SYMBOL",
2509                  "name": "expression"
2510                }
2511              }
2512            ]
2513          }
2514        },
2515        {
2516          "type": "PREC_LEFT",
2517          "value": 3,
2518          "content": {
2519            "type": "SEQ",
2520            "members": [
2521              {
2522                "type": "FIELD",
2523                "name": "left",
2524                "content": {
2525                  "type": "SYMBOL",
2526                  "name": "expression"
2527                }
2528              },
2529              {
2530                "type": "STRING",
2531                "value": ">"
2532              },
2533              {
2534                "type": "FIELD",
2535                "name": "right",
2536                "content": {
2537                  "type": "SYMBOL",
2538                  "name": "expression"
2539                }
2540              }
2541            ]
2542          }
2543        },
2544        {
2545          "type": "PREC_LEFT",
2546          "value": 4,
2547          "content": {
2548            "type": "SEQ",
2549            "members": [
2550              {
2551                "type": "FIELD",
2552                "name": "left",
2553                "content": {
2554                  "type": "SYMBOL",
2555                  "name": "expression"
2556                }
2557              },
2558              {
2559                "type": "STRING",
2560                "value": "|"
2561              },
2562              {
2563                "type": "FIELD",
2564                "name": "right",
2565                "content": {
2566                  "type": "SYMBOL",
2567                  "name": "expression"
2568                }
2569              }
2570            ]
2571          }
2572        },
2573        {
2574          "type": "PREC_LEFT",
2575          "value": 5,
2576          "content": {
2577            "type": "SEQ",
2578            "members": [
2579              {
2580                "type": "FIELD",
2581                "name": "left",
2582                "content": {
2583                  "type": "SYMBOL",
2584                  "name": "expression"
2585                }
2586              },
2587              {
2588                "type": "STRING",
2589                "value": "~"
2590              },
2591              {
2592                "type": "FIELD",
2593                "name": "right",
2594                "content": {
2595                  "type": "SYMBOL",
2596                  "name": "expression"
2597                }
2598              }
2599            ]
2600          }
2601        },
2602        {
2603          "type": "PREC_LEFT",
2604          "value": 6,
2605          "content": {
2606            "type": "SEQ",
2607            "members": [
2608              {
2609                "type": "FIELD",
2610                "name": "left",
2611                "content": {
2612                  "type": "SYMBOL",
2613                  "name": "expression"
2614                }
2615              },
2616              {
2617                "type": "STRING",
2618                "value": "&"
2619              },
2620              {
2621                "type": "FIELD",
2622                "name": "right",
2623                "content": {
2624                  "type": "SYMBOL",
2625                  "name": "expression"
2626                }
2627              }
2628            ]
2629          }
2630        },
2631        {
2632          "type": "PREC_LEFT",
2633          "value": 7,
2634          "content": {
2635            "type": "SEQ",
2636            "members": [
2637              {
2638                "type": "FIELD",
2639                "name": "left",
2640                "content": {
2641                  "type": "SYMBOL",
2642                  "name": "expression"
2643                }
2644              },
2645              {
2646                "type": "STRING",
2647                "value": "<<"
2648              },
2649              {
2650                "type": "FIELD",
2651                "name": "right",
2652                "content": {
2653                  "type": "SYMBOL",
2654                  "name": "expression"
2655                }
2656              }
2657            ]
2658          }
2659        },
2660        {
2661          "type": "PREC_LEFT",
2662          "value": 7,
2663          "content": {
2664            "type": "SEQ",
2665            "members": [
2666              {
2667                "type": "FIELD",
2668                "name": "left",
2669                "content": {
2670                  "type": "SYMBOL",
2671                  "name": "expression"
2672                }
2673              },
2674              {
2675                "type": "STRING",
2676                "value": ">>"
2677              },
2678              {
2679                "type": "FIELD",
2680                "name": "right",
2681                "content": {
2682                  "type": "SYMBOL",
2683                  "name": "expression"
2684                }
2685              }
2686            ]
2687          }
2688        },
2689        {
2690          "type": "PREC_LEFT",
2691          "value": 9,
2692          "content": {
2693            "type": "SEQ",
2694            "members": [
2695              {
2696                "type": "FIELD",
2697                "name": "left",
2698                "content": {
2699                  "type": "SYMBOL",
2700                  "name": "expression"
2701                }
2702              },
2703              {
2704                "type": "STRING",
2705                "value": "+"
2706              },
2707              {
2708                "type": "FIELD",
2709                "name": "right",
2710                "content": {
2711                  "type": "SYMBOL",
2712                  "name": "expression"
2713                }
2714              }
2715            ]
2716          }
2717        },
2718        {
2719          "type": "PREC_LEFT",
2720          "value": 9,
2721          "content": {
2722            "type": "SEQ",
2723            "members": [
2724              {
2725                "type": "FIELD",
2726                "name": "left",
2727                "content": {
2728                  "type": "SYMBOL",
2729                  "name": "expression"
2730                }
2731              },
2732              {
2733                "type": "STRING",
2734                "value": "-"
2735              },
2736              {
2737                "type": "FIELD",
2738                "name": "right",
2739                "content": {
2740                  "type": "SYMBOL",
2741                  "name": "expression"
2742                }
2743              }
2744            ]
2745          }
2746        },
2747        {
2748          "type": "PREC_LEFT",
2749          "value": 10,
2750          "content": {
2751            "type": "SEQ",
2752            "members": [
2753              {
2754                "type": "FIELD",
2755                "name": "left",
2756                "content": {
2757                  "type": "SYMBOL",
2758                  "name": "expression"
2759                }
2760              },
2761              {
2762                "type": "STRING",
2763                "value": "*"
2764              },
2765              {
2766                "type": "FIELD",
2767                "name": "right",
2768                "content": {
2769                  "type": "SYMBOL",
2770                  "name": "expression"
2771                }
2772              }
2773            ]
2774          }
2775        },
2776        {
2777          "type": "PREC_LEFT",
2778          "value": 10,
2779          "content": {
2780            "type": "SEQ",
2781            "members": [
2782              {
2783                "type": "FIELD",
2784                "name": "left",
2785                "content": {
2786                  "type": "SYMBOL",
2787                  "name": "expression"
2788                }
2789              },
2790              {
2791                "type": "STRING",
2792                "value": "/"
2793              },
2794              {
2795                "type": "FIELD",
2796                "name": "right",
2797                "content": {
2798                  "type": "SYMBOL",
2799                  "name": "expression"
2800                }
2801              }
2802            ]
2803          }
2804        },
2805        {
2806          "type": "PREC_LEFT",
2807          "value": 10,
2808          "content": {
2809            "type": "SEQ",
2810            "members": [
2811              {
2812                "type": "FIELD",
2813                "name": "left",
2814                "content": {
2815                  "type": "SYMBOL",
2816                  "name": "expression"
2817                }
2818              },
2819              {
2820                "type": "STRING",
2821                "value": "//"
2822              },
2823              {
2824                "type": "FIELD",
2825                "name": "right",
2826                "content": {
2827                  "type": "SYMBOL",
2828                  "name": "expression"
2829                }
2830              }
2831            ]
2832          }
2833        },
2834        {
2835          "type": "PREC_LEFT",
2836          "value": 10,
2837          "content": {
2838            "type": "SEQ",
2839            "members": [
2840              {
2841                "type": "FIELD",
2842                "name": "left",
2843                "content": {
2844                  "type": "SYMBOL",
2845                  "name": "expression"
2846                }
2847              },
2848              {
2849                "type": "STRING",
2850                "value": "%"
2851              },
2852              {
2853                "type": "FIELD",
2854                "name": "right",
2855                "content": {
2856                  "type": "SYMBOL",
2857                  "name": "expression"
2858                }
2859              }
2860            ]
2861          }
2862        },
2863        {
2864          "type": "PREC_RIGHT",
2865          "value": 8,
2866          "content": {
2867            "type": "SEQ",
2868            "members": [
2869              {
2870                "type": "FIELD",
2871                "name": "left",
2872                "content": {
2873                  "type": "SYMBOL",
2874                  "name": "expression"
2875                }
2876              },
2877              {
2878                "type": "STRING",
2879                "value": ".."
2880              },
2881              {
2882                "type": "FIELD",
2883                "name": "right",
2884                "content": {
2885                  "type": "SYMBOL",
2886                  "name": "expression"
2887                }
2888              }
2889            ]
2890          }
2891        },
2892        {
2893          "type": "PREC_RIGHT",
2894          "value": 12,
2895          "content": {
2896            "type": "SEQ",
2897            "members": [
2898              {
2899                "type": "FIELD",
2900                "name": "left",
2901                "content": {
2902                  "type": "SYMBOL",
2903                  "name": "expression"
2904                }
2905              },
2906              {
2907                "type": "STRING",
2908                "value": "^"
2909              },
2910              {
2911                "type": "FIELD",
2912                "name": "right",
2913                "content": {
2914                  "type": "SYMBOL",
2915                  "name": "expression"
2916                }
2917              }
2918            ]
2919          }
2920        }
2921      ]
2922    },
2923    "unary_expression": {
2924      "type": "PREC_LEFT",
2925      "value": 11,
2926      "content": {
2927        "type": "SEQ",
2928        "members": [
2929          {
2930            "type": "CHOICE",
2931            "members": [
2932              {
2933                "type": "STRING",
2934                "value": "not"
2935              },
2936              {
2937                "type": "STRING",
2938                "value": "#"
2939              },
2940              {
2941                "type": "STRING",
2942                "value": "-"
2943              },
2944              {
2945                "type": "STRING",
2946                "value": "~"
2947              }
2948            ]
2949          },
2950          {
2951            "type": "FIELD",
2952            "name": "operand",
2953            "content": {
2954              "type": "SYMBOL",
2955              "name": "expression"
2956            }
2957          }
2958        ]
2959      }
2960    },
2961    "identifier": {
2962      "type": "TOKEN",
2963      "content": {
2964        "type": "SEQ",
2965        "members": [
2966          {
2967            "type": "PATTERN",
2968            "value": "[^\\p{Control}\\s+\\-*/%^#&~|<>=(){}\\[\\];:,.\\\\'\"\\d]"
2969          },
2970          {
2971            "type": "PATTERN",
2972            "value": "[^\\p{Control}\\s+\\-*/%^#&~|<>=(){}\\[\\];:,.\\\\'\"]*"
2973          }
2974        ]
2975      }
2976    },
2977    "comment": {
2978      "type": "CHOICE",
2979      "members": [
2980        {
2981          "type": "SEQ",
2982          "members": [
2983            {
2984              "type": "FIELD",
2985              "name": "start",
2986              "content": {
2987                "type": "STRING",
2988                "value": "--"
2989              }
2990            },
2991            {
2992              "type": "FIELD",
2993              "name": "content",
2994              "content": {
2995                "type": "ALIAS",
2996                "content": {
2997                  "type": "PATTERN",
2998                  "value": "[^\\r\\n]*"
2999                },
3000                "named": true,
3001                "value": "comment_content"
3002              }
3003            }
3004          ]
3005        },
3006        {
3007          "type": "SEQ",
3008          "members": [
3009            {
3010              "type": "FIELD",
3011              "name": "start",
3012              "content": {
3013                "type": "ALIAS",
3014                "content": {
3015                  "type": "SYMBOL",
3016                  "name": "_block_comment_start"
3017                },
3018                "named": false,
3019                "value": "[["
3020              }
3021            },
3022            {
3023              "type": "FIELD",
3024              "name": "content",
3025              "content": {
3026                "type": "ALIAS",
3027                "content": {
3028                  "type": "SYMBOL",
3029                  "name": "_block_comment_content"
3030                },
3031                "named": true,
3032                "value": "comment_content"
3033              }
3034            },
3035            {
3036              "type": "FIELD",
3037              "name": "end",
3038              "content": {
3039                "type": "ALIAS",
3040                "content": {
3041                  "type": "SYMBOL",
3042                  "name": "_block_comment_end"
3043                },
3044                "named": false,
3045                "value": "]]"
3046              }
3047            }
3048          ]
3049        }
3050      ]
3051    }
3052  },
3053  "extras": [
3054    {
3055      "type": "SYMBOL",
3056      "name": "comment"
3057    },
3058    {
3059      "type": "PATTERN",
3060      "value": "\\s"
3061    }
3062  ],
3063  "conflicts": [],
3064  "precedences": [],
3065  "externals": [
3066    {
3067      "type": "SYMBOL",
3068      "name": "_block_comment_start"
3069    },
3070    {
3071      "type": "SYMBOL",
3072      "name": "_block_comment_content"
3073    },
3074    {
3075      "type": "SYMBOL",
3076      "name": "_block_comment_end"
3077    },
3078    {
3079      "type": "SYMBOL",
3080      "name": "_block_string_start"
3081    },
3082    {
3083      "type": "SYMBOL",
3084      "name": "_block_string_content"
3085    },
3086    {
3087      "type": "SYMBOL",
3088      "name": "_block_string_end"
3089    }
3090  ],
3091  "inline": [],
3092  "supertypes": [
3093    "statement",
3094    "expression",
3095    "declaration",
3096    "variable"
3097  ]
3098}