1{
   2  "name": "tcl",
   3  "word": "simple_word",
   4  "rules": {
   5    "source_file": {
   6      "type": "SYMBOL",
   7      "name": "_commands"
   8    },
   9    "_commands": {
  10      "type": "SEQ",
  11      "members": [
  12        {
  13          "type": "REPEAT",
  14          "content": {
  15            "type": "SYMBOL",
  16            "name": "_terminator"
  17          }
  18        },
  19        {
  20          "type": "SEQ",
  21          "members": [
  22            {
  23              "type": "SYMBOL",
  24              "name": "_command"
  25            },
  26            {
  27              "type": "REPEAT",
  28              "content": {
  29                "type": "SEQ",
  30                "members": [
  31                  {
  32                    "type": "REPEAT1",
  33                    "content": {
  34                      "type": "SYMBOL",
  35                      "name": "_terminator"
  36                    }
  37                  },
  38                  {
  39                    "type": "SYMBOL",
  40                    "name": "_command"
  41                  }
  42                ]
  43              }
  44            }
  45          ]
  46        },
  47        {
  48          "type": "REPEAT",
  49          "content": {
  50            "type": "SYMBOL",
  51            "name": "_terminator"
  52          }
  53        }
  54      ]
  55    },
  56    "_terminator": {
  57      "type": "CHOICE",
  58      "members": [
  59        {
  60          "type": "STRING",
  61          "value": "\n"
  62        },
  63        {
  64          "type": "STRING",
  65          "value": ";"
  66        }
  67      ]
  68    },
  69    "comment": {
  70      "type": "PATTERN",
  71      "value": "#[^\\n]*"
  72    },
  73    "_builtin": {
  74      "type": "CHOICE",
  75      "members": [
  76        {
  77          "type": "SYMBOL",
  78          "name": "conditional"
  79        },
  80        {
  81          "type": "SYMBOL",
  82          "name": "global"
  83        },
  84        {
  85          "type": "SYMBOL",
  86          "name": "namespace"
  87        },
  88        {
  89          "type": "SYMBOL",
  90          "name": "procedure"
  91        },
  92        {
  93          "type": "SYMBOL",
  94          "name": "set"
  95        },
  96        {
  97          "type": "SYMBOL",
  98          "name": "try"
  99        },
 100        {
 101          "type": "SYMBOL",
 102          "name": "foreach"
 103        },
 104        {
 105          "type": "SYMBOL",
 106          "name": "expr_cmd"
 107        },
 108        {
 109          "type": "SYMBOL",
 110          "name": "while"
 111        },
 112        {
 113          "type": "SYMBOL",
 114          "name": "catch"
 115        }
 116      ]
 117    },
 118    "while": {
 119      "type": "SEQ",
 120      "members": [
 121        {
 122          "type": "STRING",
 123          "value": "while"
 124        },
 125        {
 126          "type": "SYMBOL",
 127          "name": "expr"
 128        },
 129        {
 130          "type": "SYMBOL",
 131          "name": "_word"
 132        }
 133      ]
 134    },
 135    "expr_cmd": {
 136      "type": "SEQ",
 137      "members": [
 138        {
 139          "type": "STRING",
 140          "value": "expr"
 141        },
 142        {
 143          "type": "SYMBOL",
 144          "name": "expr"
 145        }
 146      ]
 147    },
 148    "foreach": {
 149      "type": "SEQ",
 150      "members": [
 151        {
 152          "type": "STRING",
 153          "value": "foreach"
 154        },
 155        {
 156          "type": "SYMBOL",
 157          "name": "arguments"
 158        },
 159        {
 160          "type": "SYMBOL",
 161          "name": "_word_simple"
 162        },
 163        {
 164          "type": "SYMBOL",
 165          "name": "_word"
 166        }
 167      ]
 168    },
 169    "global": {
 170      "type": "SEQ",
 171      "members": [
 172        {
 173          "type": "STRING",
 174          "value": "global"
 175        },
 176        {
 177          "type": "REPEAT",
 178          "content": {
 179            "type": "SYMBOL",
 180            "name": "_concat_word"
 181          }
 182        }
 183      ]
 184    },
 185    "namespace": {
 186      "type": "SEQ",
 187      "members": [
 188        {
 189          "type": "STRING",
 190          "value": "namespace"
 191        },
 192        {
 193          "type": "SYMBOL",
 194          "name": "word_list"
 195        }
 196      ]
 197    },
 198    "try": {
 199      "type": "SEQ",
 200      "members": [
 201        {
 202          "type": "STRING",
 203          "value": "try"
 204        },
 205        {
 206          "type": "SYMBOL",
 207          "name": "_word"
 208        },
 209        {
 210          "type": "CHOICE",
 211          "members": [
 212            {
 213              "type": "SEQ",
 214              "members": [
 215                {
 216                  "type": "STRING",
 217                  "value": "on"
 218                },
 219                {
 220                  "type": "STRING",
 221                  "value": "error"
 222                },
 223                {
 224                  "type": "SYMBOL",
 225                  "name": "arguments"
 226                },
 227                {
 228                  "type": "SYMBOL",
 229                  "name": "_word"
 230                }
 231              ]
 232            },
 233            {
 234              "type": "BLANK"
 235            }
 236          ]
 237        },
 238        {
 239          "type": "CHOICE",
 240          "members": [
 241            {
 242              "type": "SYMBOL",
 243              "name": "finally"
 244            },
 245            {
 246              "type": "BLANK"
 247            }
 248          ]
 249        }
 250      ]
 251    },
 252    "finally": {
 253      "type": "SEQ",
 254      "members": [
 255        {
 256          "type": "STRING",
 257          "value": "finally"
 258        },
 259        {
 260          "type": "SYMBOL",
 261          "name": "_word"
 262        }
 263      ]
 264    },
 265    "_command": {
 266      "type": "CHOICE",
 267      "members": [
 268        {
 269          "type": "SYMBOL",
 270          "name": "_builtin"
 271        },
 272        {
 273          "type": "SYMBOL",
 274          "name": "comment"
 275        },
 276        {
 277          "type": "SYMBOL",
 278          "name": "command"
 279        }
 280      ]
 281    },
 282    "command": {
 283      "type": "SEQ",
 284      "members": [
 285        {
 286          "type": "FIELD",
 287          "name": "name",
 288          "content": {
 289            "type": "SYMBOL",
 290            "name": "_word"
 291          }
 292        },
 293        {
 294          "type": "CHOICE",
 295          "members": [
 296            {
 297              "type": "FIELD",
 298              "name": "arguments",
 299              "content": {
 300                "type": "SYMBOL",
 301                "name": "word_list"
 302              }
 303            },
 304            {
 305              "type": "BLANK"
 306            }
 307          ]
 308        }
 309      ]
 310    },
 311    "word_list": {
 312      "type": "REPEAT1",
 313      "content": {
 314        "type": "SYMBOL",
 315        "name": "_word"
 316      }
 317    },
 318    "unpack": {
 319      "type": "STRING",
 320      "value": "{*}"
 321    },
 322    "_word": {
 323      "type": "SEQ",
 324      "members": [
 325        {
 326          "type": "CHOICE",
 327          "members": [
 328            {
 329              "type": "SYMBOL",
 330              "name": "unpack"
 331            },
 332            {
 333              "type": "BLANK"
 334            }
 335          ]
 336        },
 337        {
 338          "type": "CHOICE",
 339          "members": [
 340            {
 341              "type": "SYMBOL",
 342              "name": "braced_word"
 343            },
 344            {
 345              "type": "SYMBOL",
 346              "name": "_concat_word"
 347            }
 348          ]
 349        }
 350      ]
 351    },
 352    "_word_simple": {
 353      "type": "SEQ",
 354      "members": [
 355        {
 356          "type": "CHOICE",
 357          "members": [
 358            {
 359              "type": "SYMBOL",
 360              "name": "braced_word_simple"
 361            },
 362            {
 363              "type": "SYMBOL",
 364              "name": "_concat_word"
 365            }
 366          ]
 367        }
 368      ]
 369    },
 370    "_concat_word": {
 371      "type": "SEQ",
 372      "members": [
 373        {
 374          "type": "CHOICE",
 375          "members": [
 376            {
 377              "type": "SYMBOL",
 378              "name": "escaped_character"
 379            },
 380            {
 381              "type": "SYMBOL",
 382              "name": "command_substitution"
 383            },
 384            {
 385              "type": "SYMBOL",
 386              "name": "simple_word"
 387            },
 388            {
 389              "type": "SYMBOL",
 390              "name": "quoted_word"
 391            },
 392            {
 393              "type": "SYMBOL",
 394              "name": "variable_substitution"
 395            }
 396          ]
 397        },
 398        {
 399          "type": "REPEAT",
 400          "content": {
 401            "type": "SEQ",
 402            "members": [
 403              {
 404                "type": "SYMBOL",
 405                "name": "concat"
 406              },
 407              {
 408                "type": "CHOICE",
 409                "members": [
 410                  {
 411                    "type": "SYMBOL",
 412                    "name": "escaped_character"
 413                  },
 414                  {
 415                    "type": "SYMBOL",
 416                    "name": "command_substitution"
 417                  },
 418                  {
 419                    "type": "SYMBOL",
 420                    "name": "simple_word"
 421                  },
 422                  {
 423                    "type": "SYMBOL",
 424                    "name": "quoted_word"
 425                  },
 426                  {
 427                    "type": "SYMBOL",
 428                    "name": "variable_substitution"
 429                  }
 430                ]
 431              }
 432            ]
 433          }
 434        }
 435      ]
 436    },
 437    "_ident": {
 438      "type": "IMMEDIATE_TOKEN",
 439      "content": {
 440        "type": "PATTERN",
 441        "value": "[a-zA-Z_][a-zA-Z0-9_]*"
 442      }
 443    },
 444    "id": {
 445      "type": "SEQ",
 446      "members": [
 447        {
 448          "type": "CHOICE",
 449          "members": [
 450            {
 451              "type": "SYMBOL",
 452              "name": "_ns_delim"
 453            },
 454            {
 455              "type": "BLANK"
 456            }
 457          ]
 458        },
 459        {
 460          "type": "SEQ",
 461          "members": [
 462            {
 463              "type": "SYMBOL",
 464              "name": "_ident"
 465            },
 466            {
 467              "type": "REPEAT",
 468              "content": {
 469                "type": "SEQ",
 470                "members": [
 471                  {
 472                    "type": "SYMBOL",
 473                    "name": "_ns_delim"
 474                  },
 475                  {
 476                    "type": "SYMBOL",
 477                    "name": "_ident"
 478                  }
 479                ]
 480              }
 481            }
 482          ]
 483        }
 484      ]
 485    },
 486    "array_index": {
 487      "type": "SEQ",
 488      "members": [
 489        {
 490          "type": "STRING",
 491          "value": "("
 492        },
 493        {
 494          "type": "SYMBOL",
 495          "name": "_concat_word"
 496        },
 497        {
 498          "type": "STRING",
 499          "value": ")"
 500        }
 501      ]
 502    },
 503    "variable_substitution": {
 504      "type": "SEQ",
 505      "members": [
 506        {
 507          "type": "CHOICE",
 508          "members": [
 509            {
 510              "type": "SEQ",
 511              "members": [
 512                {
 513                  "type": "STRING",
 514                  "value": "$"
 515                },
 516                {
 517                  "type": "SYMBOL",
 518                  "name": "id"
 519                }
 520              ]
 521            },
 522            {
 523              "type": "SEQ",
 524              "members": [
 525                {
 526                  "type": "STRING",
 527                  "value": "$"
 528                },
 529                {
 530                  "type": "STRING",
 531                  "value": "{"
 532                },
 533                {
 534                  "type": "PATTERN",
 535                  "value": "[^}]+"
 536                },
 537                {
 538                  "type": "STRING",
 539                  "value": "}"
 540                }
 541              ]
 542            }
 543          ]
 544        },
 545        {
 546          "type": "CHOICE",
 547          "members": [
 548            {
 549              "type": "SYMBOL",
 550              "name": "array_index"
 551            },
 552            {
 553              "type": "BLANK"
 554            }
 555          ]
 556        }
 557      ]
 558    },
 559    "braced_word": {
 560      "type": "SEQ",
 561      "members": [
 562        {
 563          "type": "STRING",
 564          "value": "{"
 565        },
 566        {
 567          "type": "CHOICE",
 568          "members": [
 569            {
 570              "type": "SYMBOL",
 571              "name": "_commands"
 572            },
 573            {
 574              "type": "BLANK"
 575            }
 576          ]
 577        },
 578        {
 579          "type": "STRING",
 580          "value": "}"
 581        }
 582      ]
 583    },
 584    "braced_word_simple": {
 585      "type": "SEQ",
 586      "members": [
 587        {
 588          "type": "STRING",
 589          "value": "{"
 590        },
 591        {
 592          "type": "REPEAT",
 593          "content": {
 594            "type": "CHOICE",
 595            "members": [
 596              {
 597                "type": "SYMBOL",
 598                "name": "braced_word_simple"
 599              },
 600              {
 601                "type": "SYMBOL",
 602                "name": "_concat_word"
 603              }
 604            ]
 605          }
 606        },
 607        {
 608          "type": "STRING",
 609          "value": "}"
 610        }
 611      ]
 612    },
 613    "set": {
 614      "type": "SEQ",
 615      "members": [
 616        {
 617          "type": "STRING",
 618          "value": "set"
 619        },
 620        {
 621          "type": "SYMBOL",
 622          "name": "_word"
 623        },
 624        {
 625          "type": "SYMBOL",
 626          "name": "_word"
 627        }
 628      ]
 629    },
 630    "procedure": {
 631      "type": "SEQ",
 632      "members": [
 633        {
 634          "type": "STRING",
 635          "value": "proc"
 636        },
 637        {
 638          "type": "FIELD",
 639          "name": "name",
 640          "content": {
 641            "type": "SYMBOL",
 642            "name": "_word"
 643          }
 644        },
 645        {
 646          "type": "FIELD",
 647          "name": "arguments",
 648          "content": {
 649            "type": "SYMBOL",
 650            "name": "arguments"
 651          }
 652        },
 653        {
 654          "type": "FIELD",
 655          "name": "body",
 656          "content": {
 657            "type": "SYMBOL",
 658            "name": "_word"
 659          }
 660        }
 661      ]
 662    },
 663    "_argument_word": {
 664      "type": "CHOICE",
 665      "members": [
 666        {
 667          "type": "SYMBOL",
 668          "name": "simple_word"
 669        },
 670        {
 671          "type": "SYMBOL",
 672          "name": "quoted_word"
 673        },
 674        {
 675          "type": "SYMBOL",
 676          "name": "braced_word"
 677        }
 678      ]
 679    },
 680    "argument": {
 681      "type": "CHOICE",
 682      "members": [
 683        {
 684          "type": "FIELD",
 685          "name": "name",
 686          "content": {
 687            "type": "SYMBOL",
 688            "name": "simple_word"
 689          }
 690        },
 691        {
 692          "type": "SEQ",
 693          "members": [
 694            {
 695              "type": "STRING",
 696              "value": "{"
 697            },
 698            {
 699              "type": "FIELD",
 700              "name": "name",
 701              "content": {
 702                "type": "SYMBOL",
 703                "name": "simple_word"
 704              }
 705            },
 706            {
 707              "type": "CHOICE",
 708              "members": [
 709                {
 710                  "type": "FIELD",
 711                  "name": "default",
 712                  "content": {
 713                    "type": "SYMBOL",
 714                    "name": "_argument_word"
 715                  }
 716                },
 717                {
 718                  "type": "BLANK"
 719                }
 720              ]
 721            },
 722            {
 723              "type": "STRING",
 724              "value": "}"
 725            }
 726          ]
 727        }
 728      ]
 729    },
 730    "arguments": {
 731      "type": "CHOICE",
 732      "members": [
 733        {
 734          "type": "SEQ",
 735          "members": [
 736            {
 737              "type": "STRING",
 738              "value": "{"
 739            },
 740            {
 741              "type": "REPEAT",
 742              "content": {
 743                "type": "SYMBOL",
 744                "name": "argument"
 745              }
 746            },
 747            {
 748              "type": "STRING",
 749              "value": "}"
 750            }
 751          ]
 752        },
 753        {
 754          "type": "SYMBOL",
 755          "name": "simple_word"
 756        }
 757      ]
 758    },
 759    "_expr": {
 760      "type": "CHOICE",
 761      "members": [
 762        {
 763          "type": "SEQ",
 764          "members": [
 765            {
 766              "type": "STRING",
 767              "value": "("
 768            },
 769            {
 770              "type": "SYMBOL",
 771              "name": "_expr"
 772            },
 773            {
 774              "type": "STRING",
 775              "value": ")"
 776            }
 777          ]
 778        },
 779        {
 780          "type": "SEQ",
 781          "members": [
 782            {
 783              "type": "SYMBOL",
 784              "name": "simple_word"
 785            },
 786            {
 787              "type": "STRING",
 788              "value": "("
 789            },
 790            {
 791              "type": "SYMBOL",
 792              "name": "_expr"
 793            },
 794            {
 795              "type": "STRING",
 796              "value": ")"
 797            }
 798          ]
 799        },
 800        {
 801          "type": "SYMBOL",
 802          "name": "unary_expr"
 803        },
 804        {
 805          "type": "SYMBOL",
 806          "name": "binop_expr"
 807        },
 808        {
 809          "type": "SYMBOL",
 810          "name": "ternary_expr"
 811        },
 812        {
 813          "type": "SYMBOL",
 814          "name": "_concat_word"
 815        }
 816      ]
 817    },
 818    "expr": {
 819      "type": "CHOICE",
 820      "members": [
 821        {
 822          "type": "SEQ",
 823          "members": [
 824            {
 825              "type": "STRING",
 826              "value": "{"
 827            },
 828            {
 829              "type": "SYMBOL",
 830              "name": "_expr"
 831            },
 832            {
 833              "type": "STRING",
 834              "value": "}"
 835            }
 836          ]
 837        },
 838        {
 839          "type": "SYMBOL",
 840          "name": "_expr"
 841        }
 842      ]
 843    },
 844    "unary_expr": {
 845      "type": "PREC_LEFT",
 846      "value": 150,
 847      "content": {
 848        "type": "SEQ",
 849        "members": [
 850          {
 851            "type": "CHOICE",
 852            "members": [
 853              {
 854                "type": "STRING",
 855                "value": "-"
 856              },
 857              {
 858                "type": "STRING",
 859                "value": "+"
 860              },
 861              {
 862                "type": "STRING",
 863                "value": "~"
 864              },
 865              {
 866                "type": "STRING",
 867                "value": "!"
 868              }
 869            ]
 870          },
 871          {
 872            "type": "SYMBOL",
 873            "name": "_expr"
 874          }
 875        ]
 876      }
 877    },
 878    "binop_expr": {
 879      "type": "CHOICE",
 880      "members": [
 881        {
 882          "type": "PREC_LEFT",
 883          "value": 140,
 884          "content": {
 885            "type": "SEQ",
 886            "members": [
 887              {
 888                "type": "SYMBOL",
 889                "name": "_expr"
 890              },
 891              {
 892                "type": "STRING",
 893                "value": "**"
 894              },
 895              {
 896                "type": "SYMBOL",
 897                "name": "_expr"
 898              }
 899            ]
 900          }
 901        },
 902        {
 903          "type": "PREC_LEFT",
 904          "value": 130,
 905          "content": {
 906            "type": "SEQ",
 907            "members": [
 908              {
 909                "type": "SYMBOL",
 910                "name": "_expr"
 911              },
 912              {
 913                "type": "STRING",
 914                "value": "/"
 915              },
 916              {
 917                "type": "SYMBOL",
 918                "name": "_expr"
 919              }
 920            ]
 921          }
 922        },
 923        {
 924          "type": "PREC_LEFT",
 925          "value": 130,
 926          "content": {
 927            "type": "SEQ",
 928            "members": [
 929              {
 930                "type": "SYMBOL",
 931                "name": "_expr"
 932              },
 933              {
 934                "type": "STRING",
 935                "value": "*"
 936              },
 937              {
 938                "type": "SYMBOL",
 939                "name": "_expr"
 940              }
 941            ]
 942          }
 943        },
 944        {
 945          "type": "PREC_LEFT",
 946          "value": 130,
 947          "content": {
 948            "type": "SEQ",
 949            "members": [
 950              {
 951                "type": "SYMBOL",
 952                "name": "_expr"
 953              },
 954              {
 955                "type": "STRING",
 956                "value": "%"
 957              },
 958              {
 959                "type": "SYMBOL",
 960                "name": "_expr"
 961              }
 962            ]
 963          }
 964        },
 965        {
 966          "type": "PREC_LEFT",
 967          "value": 120,
 968          "content": {
 969            "type": "SEQ",
 970            "members": [
 971              {
 972                "type": "SYMBOL",
 973                "name": "_expr"
 974              },
 975              {
 976                "type": "STRING",
 977                "value": "+"
 978              },
 979              {
 980                "type": "SYMBOL",
 981                "name": "_expr"
 982              }
 983            ]
 984          }
 985        },
 986        {
 987          "type": "PREC_LEFT",
 988          "value": 120,
 989          "content": {
 990            "type": "SEQ",
 991            "members": [
 992              {
 993                "type": "SYMBOL",
 994                "name": "_expr"
 995              },
 996              {
 997                "type": "STRING",
 998                "value": "-"
 999              },
1000              {
1001                "type": "SYMBOL",
1002                "name": "_expr"
1003              }
1004            ]
1005          }
1006        },
1007        {
1008          "type": "PREC_LEFT",
1009          "value": 110,
1010          "content": {
1011            "type": "SEQ",
1012            "members": [
1013              {
1014                "type": "SYMBOL",
1015                "name": "_expr"
1016              },
1017              {
1018                "type": "STRING",
1019                "value": "<<"
1020              },
1021              {
1022                "type": "SYMBOL",
1023                "name": "_expr"
1024              }
1025            ]
1026          }
1027        },
1028        {
1029          "type": "PREC_LEFT",
1030          "value": 110,
1031          "content": {
1032            "type": "SEQ",
1033            "members": [
1034              {
1035                "type": "SYMBOL",
1036                "name": "_expr"
1037              },
1038              {
1039                "type": "STRING",
1040                "value": ">>"
1041              },
1042              {
1043                "type": "SYMBOL",
1044                "name": "_expr"
1045              }
1046            ]
1047          }
1048        },
1049        {
1050          "type": "PREC_LEFT",
1051          "value": 100,
1052          "content": {
1053            "type": "SEQ",
1054            "members": [
1055              {
1056                "type": "SYMBOL",
1057                "name": "_expr"
1058              },
1059              {
1060                "type": "STRING",
1061                "value": ">"
1062              },
1063              {
1064                "type": "SYMBOL",
1065                "name": "_expr"
1066              }
1067            ]
1068          }
1069        },
1070        {
1071          "type": "PREC_LEFT",
1072          "value": 100,
1073          "content": {
1074            "type": "SEQ",
1075            "members": [
1076              {
1077                "type": "SYMBOL",
1078                "name": "_expr"
1079              },
1080              {
1081                "type": "STRING",
1082                "value": "<"
1083              },
1084              {
1085                "type": "SYMBOL",
1086                "name": "_expr"
1087              }
1088            ]
1089          }
1090        },
1091        {
1092          "type": "PREC_LEFT",
1093          "value": 100,
1094          "content": {
1095            "type": "SEQ",
1096            "members": [
1097              {
1098                "type": "SYMBOL",
1099                "name": "_expr"
1100              },
1101              {
1102                "type": "STRING",
1103                "value": ">="
1104              },
1105              {
1106                "type": "SYMBOL",
1107                "name": "_expr"
1108              }
1109            ]
1110          }
1111        },
1112        {
1113          "type": "PREC_LEFT",
1114          "value": 100,
1115          "content": {
1116            "type": "SEQ",
1117            "members": [
1118              {
1119                "type": "SYMBOL",
1120                "name": "_expr"
1121              },
1122              {
1123                "type": "STRING",
1124                "value": "<="
1125              },
1126              {
1127                "type": "SYMBOL",
1128                "name": "_expr"
1129              }
1130            ]
1131          }
1132        },
1133        {
1134          "type": "PREC_LEFT",
1135          "value": 90,
1136          "content": {
1137            "type": "SEQ",
1138            "members": [
1139              {
1140                "type": "SYMBOL",
1141                "name": "_expr"
1142              },
1143              {
1144                "type": "STRING",
1145                "value": "=="
1146              },
1147              {
1148                "type": "SYMBOL",
1149                "name": "_expr"
1150              }
1151            ]
1152          }
1153        },
1154        {
1155          "type": "PREC_LEFT",
1156          "value": 90,
1157          "content": {
1158            "type": "SEQ",
1159            "members": [
1160              {
1161                "type": "SYMBOL",
1162                "name": "_expr"
1163              },
1164              {
1165                "type": "STRING",
1166                "value": "!="
1167              },
1168              {
1169                "type": "SYMBOL",
1170                "name": "_expr"
1171              }
1172            ]
1173          }
1174        },
1175        {
1176          "type": "PREC_LEFT",
1177          "value": 80,
1178          "content": {
1179            "type": "SEQ",
1180            "members": [
1181              {
1182                "type": "SYMBOL",
1183                "name": "_expr"
1184              },
1185              {
1186                "type": "STRING",
1187                "value": "eq"
1188              },
1189              {
1190                "type": "SYMBOL",
1191                "name": "_expr"
1192              }
1193            ]
1194          }
1195        },
1196        {
1197          "type": "PREC_LEFT",
1198          "value": 80,
1199          "content": {
1200            "type": "SEQ",
1201            "members": [
1202              {
1203                "type": "SYMBOL",
1204                "name": "_expr"
1205              },
1206              {
1207                "type": "STRING",
1208                "value": "ne"
1209              },
1210              {
1211                "type": "SYMBOL",
1212                "name": "_expr"
1213              }
1214            ]
1215          }
1216        },
1217        {
1218          "type": "PREC_LEFT",
1219          "value": 70,
1220          "content": {
1221            "type": "SEQ",
1222            "members": [
1223              {
1224                "type": "SYMBOL",
1225                "name": "_expr"
1226              },
1227              {
1228                "type": "STRING",
1229                "value": "in"
1230              },
1231              {
1232                "type": "CHOICE",
1233                "members": [
1234                  {
1235                    "type": "SYMBOL",
1236                    "name": "_concat_word"
1237                  },
1238                  {
1239                    "type": "SYMBOL",
1240                    "name": "braced_word_simple"
1241                  }
1242                ]
1243              }
1244            ]
1245          }
1246        },
1247        {
1248          "type": "PREC_LEFT",
1249          "value": 70,
1250          "content": {
1251            "type": "SEQ",
1252            "members": [
1253              {
1254                "type": "SYMBOL",
1255                "name": "_expr"
1256              },
1257              {
1258                "type": "STRING",
1259                "value": "ni"
1260              },
1261              {
1262                "type": "CHOICE",
1263                "members": [
1264                  {
1265                    "type": "SYMBOL",
1266                    "name": "_concat_word"
1267                  },
1268                  {
1269                    "type": "SYMBOL",
1270                    "name": "braced_word_simple"
1271                  }
1272                ]
1273              }
1274            ]
1275          }
1276        },
1277        {
1278          "type": "PREC_LEFT",
1279          "value": 60,
1280          "content": {
1281            "type": "SEQ",
1282            "members": [
1283              {
1284                "type": "SYMBOL",
1285                "name": "_expr"
1286              },
1287              {
1288                "type": "STRING",
1289                "value": "&"
1290              },
1291              {
1292                "type": "SYMBOL",
1293                "name": "_expr"
1294              }
1295            ]
1296          }
1297        },
1298        {
1299          "type": "PREC_LEFT",
1300          "value": 50,
1301          "content": {
1302            "type": "SEQ",
1303            "members": [
1304              {
1305                "type": "SYMBOL",
1306                "name": "_expr"
1307              },
1308              {
1309                "type": "STRING",
1310                "value": "^"
1311              },
1312              {
1313                "type": "SYMBOL",
1314                "name": "_expr"
1315              }
1316            ]
1317          }
1318        },
1319        {
1320          "type": "PREC_LEFT",
1321          "value": 40,
1322          "content": {
1323            "type": "SEQ",
1324            "members": [
1325              {
1326                "type": "SYMBOL",
1327                "name": "_expr"
1328              },
1329              {
1330                "type": "STRING",
1331                "value": "|"
1332              },
1333              {
1334                "type": "SYMBOL",
1335                "name": "_expr"
1336              }
1337            ]
1338          }
1339        },
1340        {
1341          "type": "PREC_LEFT",
1342          "value": 30,
1343          "content": {
1344            "type": "SEQ",
1345            "members": [
1346              {
1347                "type": "SYMBOL",
1348                "name": "_expr"
1349              },
1350              {
1351                "type": "STRING",
1352                "value": "&&"
1353              },
1354              {
1355                "type": "SYMBOL",
1356                "name": "_expr"
1357              }
1358            ]
1359          }
1360        },
1361        {
1362          "type": "PREC_LEFT",
1363          "value": 20,
1364          "content": {
1365            "type": "SEQ",
1366            "members": [
1367              {
1368                "type": "SYMBOL",
1369                "name": "_expr"
1370              },
1371              {
1372                "type": "STRING",
1373                "value": "||"
1374              },
1375              {
1376                "type": "SYMBOL",
1377                "name": "_expr"
1378              }
1379            ]
1380          }
1381        }
1382      ]
1383    },
1384    "ternary_expr": {
1385      "type": "PREC_LEFT",
1386      "value": 10,
1387      "content": {
1388        "type": "SEQ",
1389        "members": [
1390          {
1391            "type": "SYMBOL",
1392            "name": "_expr"
1393          },
1394          {
1395            "type": "STRING",
1396            "value": "?"
1397          },
1398          {
1399            "type": "SYMBOL",
1400            "name": "_expr"
1401          },
1402          {
1403            "type": "STRING",
1404            "value": ":"
1405          },
1406          {
1407            "type": "SYMBOL",
1408            "name": "_expr"
1409          }
1410        ]
1411      }
1412    },
1413    "elseif": {
1414      "type": "SEQ",
1415      "members": [
1416        {
1417          "type": "STRING",
1418          "value": "elseif"
1419        },
1420        {
1421          "type": "FIELD",
1422          "name": "condition",
1423          "content": {
1424            "type": "SYMBOL",
1425            "name": "expr"
1426          }
1427        },
1428        {
1429          "type": "SYMBOL",
1430          "name": "_word"
1431        }
1432      ]
1433    },
1434    "else": {
1435      "type": "SEQ",
1436      "members": [
1437        {
1438          "type": "STRING",
1439          "value": "else"
1440        },
1441        {
1442          "type": "SYMBOL",
1443          "name": "_word"
1444        }
1445      ]
1446    },
1447    "conditional": {
1448      "type": "SEQ",
1449      "members": [
1450        {
1451          "type": "STRING",
1452          "value": "if"
1453        },
1454        {
1455          "type": "FIELD",
1456          "name": "condition",
1457          "content": {
1458            "type": "SYMBOL",
1459            "name": "expr"
1460          }
1461        },
1462        {
1463          "type": "SYMBOL",
1464          "name": "_word"
1465        },
1466        {
1467          "type": "REPEAT",
1468          "content": {
1469            "type": "SYMBOL",
1470            "name": "elseif"
1471          }
1472        },
1473        {
1474          "type": "CHOICE",
1475          "members": [
1476            {
1477              "type": "SYMBOL",
1478              "name": "else"
1479            },
1480            {
1481              "type": "BLANK"
1482            }
1483          ]
1484        }
1485      ]
1486    },
1487    "catch": {
1488      "type": "SEQ",
1489      "members": [
1490        {
1491          "type": "STRING",
1492          "value": "catch"
1493        },
1494        {
1495          "type": "SYMBOL",
1496          "name": "_word"
1497        }
1498      ]
1499    },
1500    "quoted_word": {
1501      "type": "SEQ",
1502      "members": [
1503        {
1504          "type": "STRING",
1505          "value": "\""
1506        },
1507        {
1508          "type": "REPEAT",
1509          "content": {
1510            "type": "CHOICE",
1511            "members": [
1512              {
1513                "type": "SYMBOL",
1514                "name": "variable_substitution"
1515              },
1516              {
1517                "type": "SYMBOL",
1518                "name": "_quoted_word_content"
1519              },
1520              {
1521                "type": "SYMBOL",
1522                "name": "command_substitution"
1523              },
1524              {
1525                "type": "SYMBOL",
1526                "name": "escaped_character"
1527              }
1528            ]
1529          }
1530        },
1531        {
1532          "type": "STRING",
1533          "value": "\""
1534        }
1535      ]
1536    },
1537    "escaped_character": {
1538      "type": "PATTERN",
1539      "value": "\\\\."
1540    },
1541    "_quoted_word_content": {
1542      "type": "TOKEN",
1543      "content": {
1544        "type": "PREC",
1545        "value": -1,
1546        "content": {
1547          "type": "PATTERN",
1548          "value": "[^$\\\\\\[\\]\"]+"
1549        }
1550      }
1551    },
1552    "command_substitution": {
1553      "type": "SEQ",
1554      "members": [
1555        {
1556          "type": "STRING",
1557          "value": "["
1558        },
1559        {
1560          "type": "SYMBOL",
1561          "name": "_command"
1562        },
1563        {
1564          "type": "STRING",
1565          "value": "]"
1566        }
1567      ]
1568    },
1569    "simple_word": {
1570      "type": "TOKEN",
1571      "content": {
1572        "type": "PATTERN",
1573        "value": "[^!$\\s\\\\\\[\\]{}();\"]+"
1574      }
1575    }
1576  },
1577  "extras": [
1578    {
1579      "type": "PATTERN",
1580      "value": "\\s+"
1581    },
1582    {
1583      "type": "PATTERN",
1584      "value": "\\\\\\r?\\n"
1585    }
1586  ],
1587  "conflicts": [],
1588  "precedences": [],
1589  "externals": [
1590    {
1591      "type": "SYMBOL",
1592      "name": "concat"
1593    },
1594    {
1595      "type": "SYMBOL",
1596      "name": "_ns_delim"
1597    }
1598  ],
1599  "inline": [
1600    "_commands",
1601    "_builtin",
1602    "_terminator",
1603    "_word"
1604  ],
1605  "supertypes": []
1606}