1[
   2  {
   3    "type": "declaration",
   4    "named": true,
   5    "subtypes": [
   6      {
   7        "type": "function_declaration",
   8        "named": true
   9      },
  10      {
  11        "type": "variable_declaration",
  12        "named": true
  13      }
  14    ]
  15  },
  16  {
  17    "type": "expression",
  18    "named": true,
  19    "subtypes": [
  20      {
  21        "type": "binary_expression",
  22        "named": true
  23      },
  24      {
  25        "type": "false",
  26        "named": true
  27      },
  28      {
  29        "type": "function_call",
  30        "named": true
  31      },
  32      {
  33        "type": "function_definition",
  34        "named": true
  35      },
  36      {
  37        "type": "nil",
  38        "named": true
  39      },
  40      {
  41        "type": "number",
  42        "named": true
  43      },
  44      {
  45        "type": "parenthesized_expression",
  46        "named": true
  47      },
  48      {
  49        "type": "string",
  50        "named": true
  51      },
  52      {
  53        "type": "table_constructor",
  54        "named": true
  55      },
  56      {
  57        "type": "true",
  58        "named": true
  59      },
  60      {
  61        "type": "unary_expression",
  62        "named": true
  63      },
  64      {
  65        "type": "vararg_expression",
  66        "named": true
  67      },
  68      {
  69        "type": "variable",
  70        "named": true
  71      }
  72    ]
  73  },
  74  {
  75    "type": "statement",
  76    "named": true,
  77    "subtypes": [
  78      {
  79        "type": "assignment_statement",
  80        "named": true
  81      },
  82      {
  83        "type": "break_statement",
  84        "named": true
  85      },
  86      {
  87        "type": "declaration",
  88        "named": true
  89      },
  90      {
  91        "type": "do_statement",
  92        "named": true
  93      },
  94      {
  95        "type": "empty_statement",
  96        "named": true
  97      },
  98      {
  99        "type": "for_statement",
 100        "named": true
 101      },
 102      {
 103        "type": "function_call",
 104        "named": true
 105      },
 106      {
 107        "type": "goto_statement",
 108        "named": true
 109      },
 110      {
 111        "type": "if_statement",
 112        "named": true
 113      },
 114      {
 115        "type": "label_statement",
 116        "named": true
 117      },
 118      {
 119        "type": "repeat_statement",
 120        "named": true
 121      },
 122      {
 123        "type": "while_statement",
 124        "named": true
 125      }
 126    ]
 127  },
 128  {
 129    "type": "variable",
 130    "named": true,
 131    "subtypes": [
 132      {
 133        "type": "bracket_index_expression",
 134        "named": true
 135      },
 136      {
 137        "type": "dot_index_expression",
 138        "named": true
 139      },
 140      {
 141        "type": "identifier",
 142        "named": true
 143      }
 144    ]
 145  },
 146  {
 147    "type": "arguments",
 148    "named": true,
 149    "fields": {},
 150    "children": {
 151      "multiple": true,
 152      "required": false,
 153      "types": [
 154        {
 155          "type": "expression",
 156          "named": true
 157        }
 158      ]
 159    }
 160  },
 161  {
 162    "type": "assignment_statement",
 163    "named": true,
 164    "fields": {},
 165    "children": {
 166      "multiple": true,
 167      "required": true,
 168      "types": [
 169        {
 170          "type": "expression_list",
 171          "named": true
 172        },
 173        {
 174          "type": "variable_list",
 175          "named": true
 176        }
 177      ]
 178    }
 179  },
 180  {
 181    "type": "attribute",
 182    "named": true,
 183    "fields": {},
 184    "children": {
 185      "multiple": false,
 186      "required": true,
 187      "types": [
 188        {
 189          "type": "identifier",
 190          "named": true
 191        }
 192      ]
 193    }
 194  },
 195  {
 196    "type": "binary_expression",
 197    "named": true,
 198    "fields": {
 199      "left": {
 200        "multiple": false,
 201        "required": true,
 202        "types": [
 203          {
 204            "type": "expression",
 205            "named": true
 206          }
 207        ]
 208      },
 209      "right": {
 210        "multiple": false,
 211        "required": true,
 212        "types": [
 213          {
 214            "type": "expression",
 215            "named": true
 216          }
 217        ]
 218      }
 219    }
 220  },
 221  {
 222    "type": "block",
 223    "named": true,
 224    "fields": {},
 225    "children": {
 226      "multiple": true,
 227      "required": true,
 228      "types": [
 229        {
 230          "type": "return_statement",
 231          "named": true
 232        },
 233        {
 234          "type": "statement",
 235          "named": true
 236        }
 237      ]
 238    }
 239  },
 240  {
 241    "type": "bracket_index_expression",
 242    "named": true,
 243    "fields": {
 244      "field": {
 245        "multiple": false,
 246        "required": true,
 247        "types": [
 248          {
 249            "type": "expression",
 250            "named": true
 251          }
 252        ]
 253      },
 254      "table": {
 255        "multiple": false,
 256        "required": true,
 257        "types": [
 258          {
 259            "type": "function_call",
 260            "named": true
 261          },
 262          {
 263            "type": "parenthesized_expression",
 264            "named": true
 265          },
 266          {
 267            "type": "variable",
 268            "named": true
 269          }
 270        ]
 271      }
 272    }
 273  },
 274  {
 275    "type": "chunk",
 276    "named": true,
 277    "fields": {},
 278    "children": {
 279      "multiple": true,
 280      "required": false,
 281      "types": [
 282        {
 283          "type": "hash_bang_line",
 284          "named": true
 285        },
 286        {
 287          "type": "return_statement",
 288          "named": true
 289        },
 290        {
 291          "type": "statement",
 292          "named": true
 293        }
 294      ]
 295    }
 296  },
 297  {
 298    "type": "comment",
 299    "named": true,
 300    "fields": {
 301      "content": {
 302        "multiple": false,
 303        "required": true,
 304        "types": [
 305          {
 306            "type": "comment_content",
 307            "named": true
 308          }
 309        ]
 310      },
 311      "end": {
 312        "multiple": false,
 313        "required": false,
 314        "types": [
 315          {
 316            "type": "]]",
 317            "named": false
 318          }
 319        ]
 320      },
 321      "start": {
 322        "multiple": false,
 323        "required": true,
 324        "types": [
 325          {
 326            "type": "--",
 327            "named": false
 328          },
 329          {
 330            "type": "[[",
 331            "named": false
 332          }
 333        ]
 334      }
 335    }
 336  },
 337  {
 338    "type": "do_statement",
 339    "named": true,
 340    "fields": {
 341      "body": {
 342        "multiple": false,
 343        "required": false,
 344        "types": [
 345          {
 346            "type": "block",
 347            "named": true
 348          }
 349        ]
 350      }
 351    }
 352  },
 353  {
 354    "type": "dot_index_expression",
 355    "named": true,
 356    "fields": {
 357      "field": {
 358        "multiple": false,
 359        "required": true,
 360        "types": [
 361          {
 362            "type": "identifier",
 363            "named": true
 364          }
 365        ]
 366      },
 367      "table": {
 368        "multiple": false,
 369        "required": true,
 370        "types": [
 371          {
 372            "type": "function_call",
 373            "named": true
 374          },
 375          {
 376            "type": "parenthesized_expression",
 377            "named": true
 378          },
 379          {
 380            "type": "variable",
 381            "named": true
 382          }
 383        ]
 384      }
 385    }
 386  },
 387  {
 388    "type": "else_statement",
 389    "named": true,
 390    "fields": {
 391      "body": {
 392        "multiple": false,
 393        "required": false,
 394        "types": [
 395          {
 396            "type": "block",
 397            "named": true
 398          }
 399        ]
 400      }
 401    }
 402  },
 403  {
 404    "type": "elseif_statement",
 405    "named": true,
 406    "fields": {
 407      "condition": {
 408        "multiple": false,
 409        "required": true,
 410        "types": [
 411          {
 412            "type": "expression",
 413            "named": true
 414          }
 415        ]
 416      },
 417      "consequence": {
 418        "multiple": false,
 419        "required": false,
 420        "types": [
 421          {
 422            "type": "block",
 423            "named": true
 424          }
 425        ]
 426      }
 427    }
 428  },
 429  {
 430    "type": "empty_statement",
 431    "named": true,
 432    "fields": {}
 433  },
 434  {
 435    "type": "expression_list",
 436    "named": true,
 437    "fields": {
 438      "value": {
 439        "multiple": true,
 440        "required": false,
 441        "types": [
 442          {
 443            "type": "expression",
 444            "named": true
 445          }
 446        ]
 447      }
 448    },
 449    "children": {
 450      "multiple": true,
 451      "required": false,
 452      "types": [
 453        {
 454          "type": "expression",
 455          "named": true
 456        }
 457      ]
 458    }
 459  },
 460  {
 461    "type": "field",
 462    "named": true,
 463    "fields": {
 464      "name": {
 465        "multiple": false,
 466        "required": false,
 467        "types": [
 468          {
 469            "type": "expression",
 470            "named": true
 471          },
 472          {
 473            "type": "identifier",
 474            "named": true
 475          }
 476        ]
 477      },
 478      "value": {
 479        "multiple": false,
 480        "required": true,
 481        "types": [
 482          {
 483            "type": "expression",
 484            "named": true
 485          }
 486        ]
 487      }
 488    }
 489  },
 490  {
 491    "type": "for_generic_clause",
 492    "named": true,
 493    "fields": {},
 494    "children": {
 495      "multiple": true,
 496      "required": true,
 497      "types": [
 498        {
 499          "type": "expression_list",
 500          "named": true
 501        },
 502        {
 503          "type": "variable_list",
 504          "named": true
 505        }
 506      ]
 507    }
 508  },
 509  {
 510    "type": "for_numeric_clause",
 511    "named": true,
 512    "fields": {
 513      "end": {
 514        "multiple": false,
 515        "required": true,
 516        "types": [
 517          {
 518            "type": "expression",
 519            "named": true
 520          }
 521        ]
 522      },
 523      "name": {
 524        "multiple": false,
 525        "required": true,
 526        "types": [
 527          {
 528            "type": "identifier",
 529            "named": true
 530          }
 531        ]
 532      },
 533      "start": {
 534        "multiple": false,
 535        "required": true,
 536        "types": [
 537          {
 538            "type": "expression",
 539            "named": true
 540          }
 541        ]
 542      },
 543      "step": {
 544        "multiple": false,
 545        "required": false,
 546        "types": [
 547          {
 548            "type": "expression",
 549            "named": true
 550          }
 551        ]
 552      }
 553    }
 554  },
 555  {
 556    "type": "for_statement",
 557    "named": true,
 558    "fields": {
 559      "body": {
 560        "multiple": false,
 561        "required": false,
 562        "types": [
 563          {
 564            "type": "block",
 565            "named": true
 566          }
 567        ]
 568      },
 569      "clause": {
 570        "multiple": false,
 571        "required": true,
 572        "types": [
 573          {
 574            "type": "for_generic_clause",
 575            "named": true
 576          },
 577          {
 578            "type": "for_numeric_clause",
 579            "named": true
 580          }
 581        ]
 582      }
 583    }
 584  },
 585  {
 586    "type": "function_call",
 587    "named": true,
 588    "fields": {
 589      "arguments": {
 590        "multiple": false,
 591        "required": true,
 592        "types": [
 593          {
 594            "type": "arguments",
 595            "named": true
 596          }
 597        ]
 598      },
 599      "name": {
 600        "multiple": false,
 601        "required": true,
 602        "types": [
 603          {
 604            "type": "function_call",
 605            "named": true
 606          },
 607          {
 608            "type": "method_index_expression",
 609            "named": true
 610          },
 611          {
 612            "type": "parenthesized_expression",
 613            "named": true
 614          },
 615          {
 616            "type": "variable",
 617            "named": true
 618          }
 619        ]
 620      }
 621    }
 622  },
 623  {
 624    "type": "function_declaration",
 625    "named": true,
 626    "fields": {
 627      "body": {
 628        "multiple": false,
 629        "required": false,
 630        "types": [
 631          {
 632            "type": "block",
 633            "named": true
 634          }
 635        ]
 636      },
 637      "name": {
 638        "multiple": false,
 639        "required": true,
 640        "types": [
 641          {
 642            "type": "dot_index_expression",
 643            "named": true
 644          },
 645          {
 646            "type": "identifier",
 647            "named": true
 648          },
 649          {
 650            "type": "method_index_expression",
 651            "named": true
 652          }
 653        ]
 654      },
 655      "parameters": {
 656        "multiple": false,
 657        "required": true,
 658        "types": [
 659          {
 660            "type": "parameters",
 661            "named": true
 662          }
 663        ]
 664      }
 665    }
 666  },
 667  {
 668    "type": "function_definition",
 669    "named": true,
 670    "fields": {
 671      "body": {
 672        "multiple": false,
 673        "required": false,
 674        "types": [
 675          {
 676            "type": "block",
 677            "named": true
 678          }
 679        ]
 680      },
 681      "parameters": {
 682        "multiple": false,
 683        "required": true,
 684        "types": [
 685          {
 686            "type": "parameters",
 687            "named": true
 688          }
 689        ]
 690      }
 691    }
 692  },
 693  {
 694    "type": "goto_statement",
 695    "named": true,
 696    "fields": {},
 697    "children": {
 698      "multiple": false,
 699      "required": true,
 700      "types": [
 701        {
 702          "type": "identifier",
 703          "named": true
 704        }
 705      ]
 706    }
 707  },
 708  {
 709    "type": "if_statement",
 710    "named": true,
 711    "fields": {
 712      "alternative": {
 713        "multiple": true,
 714        "required": false,
 715        "types": [
 716          {
 717            "type": "else_statement",
 718            "named": true
 719          },
 720          {
 721            "type": "elseif_statement",
 722            "named": true
 723          }
 724        ]
 725      },
 726      "condition": {
 727        "multiple": false,
 728        "required": true,
 729        "types": [
 730          {
 731            "type": "expression",
 732            "named": true
 733          }
 734        ]
 735      },
 736      "consequence": {
 737        "multiple": false,
 738        "required": false,
 739        "types": [
 740          {
 741            "type": "block",
 742            "named": true
 743          }
 744        ]
 745      }
 746    }
 747  },
 748  {
 749    "type": "label_statement",
 750    "named": true,
 751    "fields": {},
 752    "children": {
 753      "multiple": false,
 754      "required": true,
 755      "types": [
 756        {
 757          "type": "identifier",
 758          "named": true
 759        }
 760      ]
 761    }
 762  },
 763  {
 764    "type": "method_index_expression",
 765    "named": true,
 766    "fields": {
 767      "method": {
 768        "multiple": false,
 769        "required": true,
 770        "types": [
 771          {
 772            "type": "identifier",
 773            "named": true
 774          }
 775        ]
 776      },
 777      "table": {
 778        "multiple": false,
 779        "required": true,
 780        "types": [
 781          {
 782            "type": "function_call",
 783            "named": true
 784          },
 785          {
 786            "type": "parenthesized_expression",
 787            "named": true
 788          },
 789          {
 790            "type": "variable",
 791            "named": true
 792          }
 793        ]
 794      }
 795    }
 796  },
 797  {
 798    "type": "parameters",
 799    "named": true,
 800    "fields": {
 801      "name": {
 802        "multiple": true,
 803        "required": false,
 804        "types": [
 805          {
 806            "type": "identifier",
 807            "named": true
 808          }
 809        ]
 810      }
 811    },
 812    "children": {
 813      "multiple": false,
 814      "required": false,
 815      "types": [
 816        {
 817          "type": "vararg_expression",
 818          "named": true
 819        }
 820      ]
 821    }
 822  },
 823  {
 824    "type": "parenthesized_expression",
 825    "named": true,
 826    "fields": {},
 827    "children": {
 828      "multiple": false,
 829      "required": true,
 830      "types": [
 831        {
 832          "type": "expression",
 833          "named": true
 834        }
 835      ]
 836    }
 837  },
 838  {
 839    "type": "repeat_statement",
 840    "named": true,
 841    "fields": {
 842      "body": {
 843        "multiple": false,
 844        "required": false,
 845        "types": [
 846          {
 847            "type": "block",
 848            "named": true
 849          }
 850        ]
 851      },
 852      "condition": {
 853        "multiple": false,
 854        "required": true,
 855        "types": [
 856          {
 857            "type": "expression",
 858            "named": true
 859          }
 860        ]
 861      }
 862    }
 863  },
 864  {
 865    "type": "return_statement",
 866    "named": true,
 867    "fields": {},
 868    "children": {
 869      "multiple": false,
 870      "required": false,
 871      "types": [
 872        {
 873          "type": "expression_list",
 874          "named": true
 875        }
 876      ]
 877    }
 878  },
 879  {
 880    "type": "string",
 881    "named": true,
 882    "fields": {
 883      "content": {
 884        "multiple": false,
 885        "required": false,
 886        "types": [
 887          {
 888            "type": "string_content",
 889            "named": true
 890          }
 891        ]
 892      },
 893      "end": {
 894        "multiple": false,
 895        "required": true,
 896        "types": [
 897          {
 898            "type": "\"",
 899            "named": false
 900          },
 901          {
 902            "type": "'",
 903            "named": false
 904          },
 905          {
 906            "type": "]]",
 907            "named": false
 908          }
 909        ]
 910      },
 911      "start": {
 912        "multiple": false,
 913        "required": true,
 914        "types": [
 915          {
 916            "type": "\"",
 917            "named": false
 918          },
 919          {
 920            "type": "'",
 921            "named": false
 922          },
 923          {
 924            "type": "[[",
 925            "named": false
 926          }
 927        ]
 928      }
 929    }
 930  },
 931  {
 932    "type": "string_content",
 933    "named": true,
 934    "fields": {},
 935    "children": {
 936      "multiple": true,
 937      "required": false,
 938      "types": [
 939        {
 940          "type": "escape_sequence",
 941          "named": true
 942        }
 943      ]
 944    }
 945  },
 946  {
 947    "type": "table_constructor",
 948    "named": true,
 949    "fields": {},
 950    "children": {
 951      "multiple": true,
 952      "required": false,
 953      "types": [
 954        {
 955          "type": "field",
 956          "named": true
 957        }
 958      ]
 959    }
 960  },
 961  {
 962    "type": "unary_expression",
 963    "named": true,
 964    "fields": {
 965      "operand": {
 966        "multiple": false,
 967        "required": true,
 968        "types": [
 969          {
 970            "type": "expression",
 971            "named": true
 972          }
 973        ]
 974      }
 975    }
 976  },
 977  {
 978    "type": "variable_declaration",
 979    "named": true,
 980    "fields": {},
 981    "children": {
 982      "multiple": false,
 983      "required": true,
 984      "types": [
 985        {
 986          "type": "assignment_statement",
 987          "named": true
 988        },
 989        {
 990          "type": "variable_list",
 991          "named": true
 992        }
 993      ]
 994    }
 995  },
 996  {
 997    "type": "variable_list",
 998    "named": true,
 999    "fields": {
1000      "attribute": {
1001        "multiple": true,
1002        "required": false,
1003        "types": [
1004          {
1005            "type": "attribute",
1006            "named": true
1007          }
1008        ]
1009      },
1010      "name": {
1011        "multiple": true,
1012        "required": true,
1013        "types": [
1014          {
1015            "type": "variable",
1016            "named": true
1017          }
1018        ]
1019      }
1020    }
1021  },
1022  {
1023    "type": "while_statement",
1024    "named": true,
1025    "fields": {
1026      "body": {
1027        "multiple": false,
1028        "required": false,
1029        "types": [
1030          {
1031            "type": "block",
1032            "named": true
1033          }
1034        ]
1035      },
1036      "condition": {
1037        "multiple": false,
1038        "required": true,
1039        "types": [
1040          {
1041            "type": "expression",
1042            "named": true
1043          }
1044        ]
1045      }
1046    }
1047  },
1048  {
1049    "type": "\"",
1050    "named": false
1051  },
1052  {
1053    "type": "#",
1054    "named": false
1055  },
1056  {
1057    "type": "%",
1058    "named": false
1059  },
1060  {
1061    "type": "&",
1062    "named": false
1063  },
1064  {
1065    "type": "'",
1066    "named": false
1067  },
1068  {
1069    "type": "(",
1070    "named": false
1071  },
1072  {
1073    "type": ")",
1074    "named": false
1075  },
1076  {
1077    "type": "*",
1078    "named": false
1079  },
1080  {
1081    "type": "+",
1082    "named": false
1083  },
1084  {
1085    "type": ",",
1086    "named": false
1087  },
1088  {
1089    "type": "-",
1090    "named": false
1091  },
1092  {
1093    "type": "--",
1094    "named": false
1095  },
1096  {
1097    "type": ".",
1098    "named": false
1099  },
1100  {
1101    "type": "..",
1102    "named": false
1103  },
1104  {
1105    "type": "/",
1106    "named": false
1107  },
1108  {
1109    "type": "//",
1110    "named": false
1111  },
1112  {
1113    "type": ":",
1114    "named": false
1115  },
1116  {
1117    "type": "::",
1118    "named": false
1119  },
1120  {
1121    "type": ";",
1122    "named": false
1123  },
1124  {
1125    "type": "<",
1126    "named": false
1127  },
1128  {
1129    "type": "<<",
1130    "named": false
1131  },
1132  {
1133    "type": "<=",
1134    "named": false
1135  },
1136  {
1137    "type": "=",
1138    "named": false
1139  },
1140  {
1141    "type": "==",
1142    "named": false
1143  },
1144  {
1145    "type": ">",
1146    "named": false
1147  },
1148  {
1149    "type": ">=",
1150    "named": false
1151  },
1152  {
1153    "type": ">>",
1154    "named": false
1155  },
1156  {
1157    "type": "[",
1158    "named": false
1159  },
1160  {
1161    "type": "[[",
1162    "named": false
1163  },
1164  {
1165    "type": "]",
1166    "named": false
1167  },
1168  {
1169    "type": "]]",
1170    "named": false
1171  },
1172  {
1173    "type": "^",
1174    "named": false
1175  },
1176  {
1177    "type": "and",
1178    "named": false
1179  },
1180  {
1181    "type": "break_statement",
1182    "named": true
1183  },
1184  {
1185    "type": "comment_content",
1186    "named": true
1187  },
1188  {
1189    "type": "do",
1190    "named": false
1191  },
1192  {
1193    "type": "else",
1194    "named": false
1195  },
1196  {
1197    "type": "elseif",
1198    "named": false
1199  },
1200  {
1201    "type": "end",
1202    "named": false
1203  },
1204  {
1205    "type": "escape_sequence",
1206    "named": true
1207  },
1208  {
1209    "type": "false",
1210    "named": true
1211  },
1212  {
1213    "type": "for",
1214    "named": false
1215  },
1216  {
1217    "type": "function",
1218    "named": false
1219  },
1220  {
1221    "type": "goto",
1222    "named": false
1223  },
1224  {
1225    "type": "hash_bang_line",
1226    "named": true
1227  },
1228  {
1229    "type": "identifier",
1230    "named": true
1231  },
1232  {
1233    "type": "if",
1234    "named": false
1235  },
1236  {
1237    "type": "in",
1238    "named": false
1239  },
1240  {
1241    "type": "local",
1242    "named": false
1243  },
1244  {
1245    "type": "nil",
1246    "named": true
1247  },
1248  {
1249    "type": "not",
1250    "named": false
1251  },
1252  {
1253    "type": "number",
1254    "named": true
1255  },
1256  {
1257    "type": "or",
1258    "named": false
1259  },
1260  {
1261    "type": "repeat",
1262    "named": false
1263  },
1264  {
1265    "type": "return",
1266    "named": false
1267  },
1268  {
1269    "type": "then",
1270    "named": false
1271  },
1272  {
1273    "type": "true",
1274    "named": true
1275  },
1276  {
1277    "type": "until",
1278    "named": false
1279  },
1280  {
1281    "type": "vararg_expression",
1282    "named": true
1283  },
1284  {
1285    "type": "while",
1286    "named": false
1287  },
1288  {
1289    "type": "{",
1290    "named": false
1291  },
1292  {
1293    "type": "|",
1294    "named": false
1295  },
1296  {
1297    "type": "}",
1298    "named": false
1299  },
1300  {
1301    "type": "~",
1302    "named": false
1303  },
1304  {
1305    "type": "~=",
1306    "named": false
1307  }
1308]