plum

#treesitter#compiler#wasm

git clone https://git.pyrossh.dev/plum

A statically typed, imperative programming language inspired by rust, python


plum-tooling/tree-sitter-plum/src/grammar.json
4bd2c1c 1
{
0d43379 2
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
f997bee 3
  "name": "plum",
4bd2c1c 4
  "rules": {
4bd2c1c 5
    "source": {
4bd2c1c 6
      "type": "SEQ",
4bd2c1c 7
      "members": [
4bd2c1c 8
        {
4bd2c1c 9
          "type": "CHOICE",
4bd2c1c 10
          "members": [
4bd2c1c 11
            {
58cc293 12
              "type": "SYMBOL",
58cc293 13
              "name": "module"
4bd2c1c 14
            },
4bd2c1c 15
            {
4bd2c1c 16
              "type": "BLANK"
4bd2c1c 17
            }
4bd2c1c 18
          ]
4bd2c1c 19
        },
4bd2c1c 20
        {
4bd2c1c 21
          "type": "REPEAT",
4bd2c1c 22
          "content": {
4bd2c1c 23
            "type": "SYMBOL",
4bd2c1c 24
            "name": "import"
4bd2c1c 25
          }
4bd2c1c 26
        },
4bd2c1c 27
        {
4bd2c1c 28
          "type": "REPEAT",
4bd2c1c 29
          "content": {
4bd2c1c 30
            "type": "CHOICE",
4bd2c1c 31
            "members": [
4bd2c1c 32
              {
4bd2c1c 33
                "type": "SYMBOL",
4bd2c1c 34
                "name": "trait"
4bd2c1c 35
              },
4bd2c1c 36
              {
4bd2c1c 37
                "type": "SYMBOL",
4bd2c1c 38
                "name": "enum"
4bd2c1c 39
              },
4bd2c1c 40
              {
4bd2c1c 41
                "type": "SYMBOL",
4bd2c1c 42
                "name": "fn"
58cc293 43
              },
58cc293 44
              {
58cc293 45
                "type": "SYMBOL",
58cc293 46
                "name": "const"
a271f34 47
              },
a271f34 48
              {
a271f34 49
                "type": "SYMBOL",
a271f34 50
                "name": "test"
4bd2c1c 51
              }
4bd2c1c 52
            ]
4bd2c1c 53
          }
4bd2c1c 54
        }
4bd2c1c 55
      ]
4bd2c1c 56
    },
4bd2c1c 57
    "module": {
58cc293 58
      "type": "SEQ",
58cc293 59
      "members": [
58cc293 60
        {
58cc293 61
          "type": "STRING",
58cc293 62
          "value": "module"
58cc293 63
        },
58cc293 64
        {
58cc293 65
          "type": "SYMBOL",
58cc293 66
          "name": "mod_identifier"
58cc293 67
        }
58cc293 68
      ]
4bd2c1c 69
    },
4bd2c1c 70
    "import": {
4bd2c1c 71
      "type": "SEQ",
4bd2c1c 72
      "members": [
4bd2c1c 73
        {
4bd2c1c 74
          "type": "STRING",
4bd2c1c 75
          "value": "import"
4bd2c1c 76
        },
4bd2c1c 77
        {
4bd2c1c 78
          "type": "SYMBOL",
4bd2c1c 79
          "name": "url"
4bd2c1c 80
        }
4bd2c1c 81
      ]
4bd2c1c 82
    },
4bd2c1c 83
    "url": {
4bd2c1c 84
      "type": "SEQ",
4bd2c1c 85
      "members": [
4bd2c1c 86
        {
a271f34 87
          "type": "SYMBOL",
a271f34 88
          "name": "url_segment"
4bd2c1c 89
        },
4bd2c1c 90
        {
4bd2c1c 91
          "type": "REPEAT",
4bd2c1c 92
          "content": {
4bd2c1c 93
            "type": "SEQ",
4bd2c1c 94
            "members": [
4bd2c1c 95
              {
4bd2c1c 96
                "type": "STRING",
4bd2c1c 97
                "value": "/"
4bd2c1c 98
              },
4bd2c1c 99
              {
a271f34 100
                "type": "SYMBOL",
a271f34 101
                "name": "url_segment"
4bd2c1c 102
              }
4bd2c1c 103
            ]
4bd2c1c 104
          }
4bd2c1c 105
        }
4bd2c1c 106
      ]
4bd2c1c 107
    },
a271f34 108
    "url_segment": {
a271f34 109
      "type": "PATTERN",
a271f34 110
      "value": "[a-zA-Z_][a-zA-Z_0-9]*"
a271f34 111
    },
4bd2c1c 112
    "generics": {
4bd2c1c 113
      "type": "SEQ",
4bd2c1c 114
      "members": [
4bd2c1c 115
        {
4bd2c1c 116
          "type": "STRING",
8f91d27 117
          "value": "["
4bd2c1c 118
        },
4bd2c1c 119
        {
4bd2c1c 120
          "type": "SEQ",
4bd2c1c 121
          "members": [
4bd2c1c 122
            {
4bd2c1c 123
              "type": "SYMBOL",
4bd2c1c 124
              "name": "generic_type"
4bd2c1c 125
            },
4bd2c1c 126
            {
4bd2c1c 127
              "type": "REPEAT",
4bd2c1c 128
              "content": {
4bd2c1c 129
                "type": "SEQ",
4bd2c1c 130
                "members": [
4bd2c1c 131
                  {
4bd2c1c 132
                    "type": "STRING",
4bd2c1c 133
                    "value": ","
4bd2c1c 134
                  },
4bd2c1c 135
                  {
4bd2c1c 136
                    "type": "SYMBOL",
4bd2c1c 137
                    "name": "generic_type"
4bd2c1c 138
                  }
4bd2c1c 139
                ]
4bd2c1c 140
              }
4bd2c1c 141
            }
4bd2c1c 142
          ]
4bd2c1c 143
        },
4bd2c1c 144
        {
4bd2c1c 145
          "type": "STRING",
8f91d27 146
          "value": "]"
4bd2c1c 147
        }
4bd2c1c 148
      ]
4bd2c1c 149
    },
4bd2c1c 150
    "generic_type": {
4bd2c1c 151
      "type": "SEQ",
4bd2c1c 152
      "members": [
4bd2c1c 153
        {
4bd2c1c 154
          "type": "SYMBOL",
f997bee 155
          "name": "generic"
4bd2c1c 156
        },
4bd2c1c 157
        {
4bd2c1c 158
          "type": "CHOICE",
4bd2c1c 159
          "members": [
4bd2c1c 160
            {
4bd2c1c 161
              "type": "SEQ",
4bd2c1c 162
              "members": [
4bd2c1c 163
                {
4bd2c1c 164
                  "type": "STRING",
4bd2c1c 165
                  "value": ":"
4bd2c1c 166
                },
4bd2c1c 167
                {
4bd2c1c 168
                  "type": "SEQ",
4bd2c1c 169
                  "members": [
4bd2c1c 170
                    {
4bd2c1c 171
                      "type": "SYMBOL",
f997bee 172
                      "name": "type_identifier"
4bd2c1c 173
                    },
4bd2c1c 174
                    {
4bd2c1c 175
                      "type": "REPEAT",
4bd2c1c 176
                      "content": {
4bd2c1c 177
                        "type": "SEQ",
4bd2c1c 178
                        "members": [
4bd2c1c 179
                          {
efe15db 180
                            "type": "STRING",
efe15db 181
                            "value": "+"
4bd2c1c 182
                          },
4bd2c1c 183
                          {
4bd2c1c 184
                            "type": "SYMBOL",
f997bee 185
                            "name": "type_identifier"
4bd2c1c 186
                          }
4bd2c1c 187
                        ]
4bd2c1c 188
                      }
4bd2c1c 189
                    }
4bd2c1c 190
                  ]
4bd2c1c 191
                }
4bd2c1c 192
              ]
4bd2c1c 193
            },
4bd2c1c 194
            {
4bd2c1c 195
              "type": "BLANK"
4bd2c1c 196
            }
4bd2c1c 197
          ]
4bd2c1c 198
        }
4bd2c1c 199
      ]
4bd2c1c 200
    },
4bd2c1c 201
    "type": {
f997bee 202
      "type": "CHOICE",
f997bee 203
      "members": [
f997bee 204
        {
287b97c 205
          "type": "PREC",
287b97c 206
          "value": 24,
287b97c 207
          "content": {
287b97c 208
            "type": "SEQ",
287b97c 209
            "members": [
287b97c 210
              {
287b97c 211
                "type": "SYMBOL",
287b97c 212
                "name": "type_identifier"
287b97c 213
              },
287b97c 214
              {
287b97c 215
                "type": "FIELD",
287b97c 216
                "name": "generics",
287b97c 217
                "content": {
287b97c 218
                  "type": "CHOICE",
287b97c 219
                  "members": [
287b97c 220
                    {
287b97c 221
                      "type": "SEQ",
287b97c 222
                      "members": [
287b97c 223
                        {
287b97c 224
                          "type": "STRING",
287b97c 225
                          "value": "["
287b97c 226
                        },
287b97c 227
                        {
287b97c 228
                          "type": "SEQ",
287b97c 229
                          "members": [
287b97c 230
                            {
287b97c 231
                              "type": "SYMBOL",
287b97c 232
                              "name": "type"
287b97c 233
                            },
287b97c 234
                            {
287b97c 235
                              "type": "REPEAT",
287b97c 236
                              "content": {
287b97c 237
                                "type": "SEQ",
287b97c 238
                                "members": [
287b97c 239
                                  {
287b97c 240
                                    "type": "STRING",
287b97c 241
                                    "value": ","
287b97c 242
                                  },
287b97c 243
                                  {
287b97c 244
                                    "type": "SYMBOL",
287b97c 245
                                    "name": "type"
287b97c 246
                                  }
287b97c 247
                                ]
287b97c 248
                              }
8f91d27 249
                            }
287b97c 250
                          ]
287b97c 251
                        },
287b97c 252
                        {
287b97c 253
                          "type": "STRING",
287b97c 254
                          "value": "]"
287b97c 255
                        }
287b97c 256
                      ]
287b97c 257
                    },
287b97c 258
                    {
287b97c 259
                      "type": "BLANK"
287b97c 260
                    }
287b97c 261
                  ]
287b97c 262
                }
f997bee 263
              }
287b97c 264
            ]
287b97c 265
          }
f997bee 266
        },
f997bee 267
        {
f997bee 268
          "type": "SYMBOL",
f997bee 269
          "name": "generic"
a271f34 270
        },
a271f34 271
        {
a271f34 272
          "type": "SEQ",
a271f34 273
          "members": [
a271f34 274
            {
a271f34 275
              "type": "STRING",
a271f34 276
              "value": "["
a271f34 277
            },
a271f34 278
            {
a271f34 279
              "type": "STRING",
a271f34 280
              "value": "]"
a271f34 281
            },
a271f34 282
            {
a271f34 283
              "type": "FIELD",
a271f34 284
              "name": "element",
a271f34 285
              "content": {
a271f34 286
                "type": "SYMBOL",
a271f34 287
                "name": "type"
a271f34 288
              }
a271f34 289
            }
a271f34 290
          ]
f997bee 291
        }
f997bee 292
      ]
f997bee 293
    },
f997bee 294
    "variadic_type": {
4bd2c1c 295
      "type": "SEQ",
4bd2c1c 296
      "members": [
f997bee 297
        {
f997bee 298
          "type": "STRING",
f997bee 299
          "value": "..."
f997bee 300
        },
4bd2c1c 301
        {
4bd2c1c 302
          "type": "SYMBOL",
f997bee 303
          "name": "type"
f997bee 304
        }
f997bee 305
      ]
f997bee 306
    },
4bd2c1c 307
    "trait": {
4bd2c1c 308
      "type": "SEQ",
4bd2c1c 309
      "members": [
4bd2c1c 310
        {
4bd2c1c 311
          "type": "STRING",
4bd2c1c 312
          "value": "trait"
4bd2c1c 313
        },
4bd2c1c 314
        {
4bd2c1c 315
          "type": "FIELD",
4bd2c1c 316
          "name": "name",
4bd2c1c 317
          "content": {
4bd2c1c 318
            "type": "SYMBOL",
f997bee 319
            "name": "type_identifier"
4bd2c1c 320
          }
4bd2c1c 321
        },
4bd2c1c 322
        {
4bd2c1c 323
          "type": "FIELD",
4bd2c1c 324
          "name": "generics",
4bd2c1c 325
          "content": {
4bd2c1c 326
            "type": "CHOICE",
4bd2c1c 327
            "members": [
4bd2c1c 328
              {
4bd2c1c 329
                "type": "SYMBOL",
4bd2c1c 330
                "name": "generics"
4bd2c1c 331
              },
4bd2c1c 332
              {
4bd2c1c 333
                "type": "BLANK"
4bd2c1c 334
              }
4bd2c1c 335
            ]
4bd2c1c 336
          }
4bd2c1c 337
        },
59e3de6 338
        {
59e3de6 339
          "type": "STRING",
59e3de6 340
          "value": "="
59e3de6 341
        },
59e3de6 342
        {
59e3de6 343
          "type": "SYMBOL",
59e3de6 344
          "name": "_indent"
59e3de6 345
        },
4bd2c1c 346
        {
4bd2c1c 347
          "type": "FIELD",
4bd2c1c 348
          "name": "fields",
4bd2c1c 349
          "content": {
59e3de6 350
            "type": "CHOICE",
4bd2c1c 351
            "members": [
4bd2c1c 352
              {
4bd2c1c 353
                "type": "REPEAT",
4bd2c1c 354
                "content": {
59e3de6 355
                  "type": "ALIAS",
59e3de6 356
                  "content": {
59e3de6 357
                    "type": "SYMBOL",
59e3de6 358
                    "name": "trait_field"
59e3de6 359
                  },
59e3de6 360
                  "named": true,
59e3de6 361
                  "value": "field"
4bd2c1c 362
                }
4bd2c1c 363
              },
4bd2c1c 364
              {
59e3de6 365
                "type": "BLANK"
4bd2c1c 366
              }
4bd2c1c 367
            ]
4bd2c1c 368
          }
59e3de6 369
        },
59e3de6 370
        {
59e3de6 371
          "type": "SYMBOL",
59e3de6 372
          "name": "_dedent"
4bd2c1c 373
        }
4bd2c1c 374
      ]
4bd2c1c 375
    },
4bd2c1c 376
    "trait_field": {
4bd2c1c 377
      "type": "SEQ",
4bd2c1c 378
      "members": [
4bd2c1c 379
        {
4bd2c1c 380
          "type": "FIELD",
4bd2c1c 381
          "name": "name",
4bd2c1c 382
          "content": {
4bd2c1c 383
            "type": "SYMBOL",
9e7927c 384
            "name": "fn_identifier"
4bd2c1c 385
          }
4bd2c1c 386
        },
4bd2c1c 387
        {
4bd2c1c 388
          "type": "FIELD",
4bd2c1c 389
          "name": "params",
4bd2c1c 390
          "content": {
4bd2c1c 391
            "type": "SEQ",
4bd2c1c 392
            "members": [
4bd2c1c 393
              {
4bd2c1c 394
                "type": "STRING",
4bd2c1c 395
                "value": "("
4bd2c1c 396
              },
4bd2c1c 397
              {
4bd2c1c 398
                "type": "CHOICE",
4bd2c1c 399
                "members": [
4bd2c1c 400
                  {
4bd2c1c 401
                    "type": "SEQ",
4bd2c1c 402
                    "members": [
4bd2c1c 403
                      {
141de54 404
                        "type": "CHOICE",
141de54 405
                        "members": [
141de54 406
                          {
141de54 407
                            "type": "SYMBOL",
141de54 408
                            "name": "self"
141de54 409
                          },
141de54 410
                          {
141de54 411
                            "type": "SYMBOL",
141de54 412
                            "name": "param"
141de54 413
                          }
141de54 414
                        ]
4bd2c1c 415
                      },
4bd2c1c 416
                      {
4bd2c1c 417
                        "type": "REPEAT",
4bd2c1c 418
                        "content": {
4bd2c1c 419
                          "type": "SEQ",
4bd2c1c 420
                          "members": [
4bd2c1c 421
                            {
4bd2c1c 422
                              "type": "STRING",
4bd2c1c 423
                              "value": ","
4bd2c1c 424
                            },
4bd2c1c 425
                            {
141de54 426
                              "type": "CHOICE",
141de54 427
                              "members": [
141de54 428
                                {
141de54 429
                                  "type": "SYMBOL",
141de54 430
                                  "name": "self"
141de54 431
                                },
141de54 432
                                {
141de54 433
                                  "type": "SYMBOL",
141de54 434
                                  "name": "param"
141de54 435
                                }
141de54 436
                              ]
4bd2c1c 437
                            }
4bd2c1c 438
                          ]
4bd2c1c 439
                        }
4bd2c1c 440
                      }
4bd2c1c 441
                    ]
4bd2c1c 442
                  },
4bd2c1c 443
                  {
4bd2c1c 444
                    "type": "BLANK"
4bd2c1c 445
                  }
4bd2c1c 446
                ]
4bd2c1c 447
              },
4bd2c1c 448
              {
4bd2c1c 449
                "type": "STRING",
4bd2c1c 450
                "value": ")"
4bd2c1c 451
              }
4bd2c1c 452
            ]
4bd2c1c 453
          }
4bd2c1c 454
        },
4bd2c1c 455
        {
4bd2c1c 456
          "type": "FIELD",
4bd2c1c 457
          "name": "returns",
4bd2c1c 458
          "content": {
4bd2c1c 459
            "type": "CHOICE",
4bd2c1c 460
            "members": [
4bd2c1c 461
              {
59e3de6 462
                "type": "SEQ",
59e3de6 463
                "members": [
59e3de6 464
                  {
59e3de6 465
                    "type": "STRING",
59e3de6 466
                    "value": "->"
59e3de6 467
                  },
59e3de6 468
                  {
59e3de6 469
                    "type": "SYMBOL",
8f91d27 470
                    "name": "type"
59e3de6 471
                  }
59e3de6 472
                ]
4bd2c1c 473
              },
4bd2c1c 474
              {
4bd2c1c 475
                "type": "BLANK"
4bd2c1c 476
              }
4bd2c1c 477
            ]
4bd2c1c 478
          }
4bd2c1c 479
        }
4bd2c1c 480
      ]
4bd2c1c 481
    },
4bd2c1c 482
    "param": {
419a88f 483
      "type": "SEQ",
4bd2c1c 484
      "members": [
4bd2c1c 485
        {
419a88f 486
          "type": "FIELD",
419a88f 487
          "name": "name",
419a88f 488
          "content": {
419a88f 489
            "type": "SYMBOL",
9e7927c 490
            "name": "var_identifier"
419a88f 491
          }
4bd2c1c 492
        },
4bd2c1c 493
        {
419a88f 494
          "type": "STRING",
419a88f 495
          "value": ":"
419a88f 496
        },
419a88f 497
        {
419a88f 498
          "type": "FIELD",
419a88f 499
          "name": "type",
419a88f 500
          "content": {
419a88f 501
            "type": "CHOICE",
419a88f 502
            "members": [
419a88f 503
              {
f997bee 504
                "type": "SYMBOL",
419a88f 505
                "name": "type"
419a88f 506
              },
419a88f 507
              {
419a88f 508
                "type": "SYMBOL",
419a88f 509
                "name": "variadic_type"
906b92e 510
              },
906b92e 511
              {
906b92e 512
                "type": "SYMBOL",
906b92e 513
                "name": "fn_value_type"
5de508e 514
              }
419a88f 515
            ]
419a88f 516
          }
419a88f 517
        },
419a88f 518
        {
419a88f 519
          "type": "CHOICE",
419a88f 520
          "members": [
5de508e 521
            {
419a88f 522
              "type": "SEQ",
4bd2c1c 523
              "members": [
4bd2c1c 524
                {
419a88f 525
                  "type": "STRING",
419a88f 526
                  "value": "="
4bd2c1c 527
                },
4bd2c1c 528
                {
419a88f 529
                  "type": "FIELD",
419a88f 530
                  "name": "value",
419a88f 531
                  "content": {
419a88f 532
                    "type": "SYMBOL",
419a88f 533
                    "name": "expression"
419a88f 534
                  }
4bd2c1c 535
                }
4bd2c1c 536
              ]
419a88f 537
            },
419a88f 538
            {
419a88f 539
              "type": "BLANK"
4bd2c1c 540
            }
4bd2c1c 541
          ]
4bd2c1c 542
        }
4bd2c1c 543
      ]
4bd2c1c 544
    },
906b92e 545
    "fn_value_type": {
906b92e 546
      "type": "SEQ",
906b92e 547
      "members": [
906b92e 548
        {
906b92e 549
          "type": "STRING",
906b92e 550
          "value": "fn"
906b92e 551
        },
906b92e 552
        {
906b92e 553
          "type": "STRING",
906b92e 554
          "value": "("
906b92e 555
        },
906b92e 556
        {
906b92e 557
          "type": "FIELD",
906b92e 558
          "name": "params",
906b92e 559
          "content": {
906b92e 560
            "type": "CHOICE",
906b92e 561
            "members": [
906b92e 562
              {
906b92e 563
                "type": "SEQ",
906b92e 564
                "members": [
906b92e 565
                  {
906b92e 566
                    "type": "SYMBOL",
906b92e 567
                    "name": "type"
906b92e 568
                  },
906b92e 569
                  {
906b92e 570
                    "type": "REPEAT",
906b92e 571
                    "content": {
906b92e 572
                      "type": "SEQ",
906b92e 573
                      "members": [
906b92e 574
                        {
906b92e 575
                          "type": "STRING",
906b92e 576
                          "value": ","
906b92e 577
                        },
906b92e 578
                        {
906b92e 579
                          "type": "SYMBOL",
906b92e 580
                          "name": "type"
906b92e 581
                        }
906b92e 582
                      ]
906b92e 583
                    }
906b92e 584
                  }
906b92e 585
                ]
906b92e 586
              },
906b92e 587
              {
906b92e 588
                "type": "BLANK"
906b92e 589
              }
906b92e 590
            ]
906b92e 591
          }
906b92e 592
        },
906b92e 593
        {
906b92e 594
          "type": "STRING",
906b92e 595
          "value": ")"
906b92e 596
        },
906b92e 597
        {
906b92e 598
          "type": "CHOICE",
906b92e 599
          "members": [
906b92e 600
            {
906b92e 601
              "type": "SEQ",
906b92e 602
              "members": [
906b92e 603
                {
906b92e 604
                  "type": "STRING",
906b92e 605
                  "value": "->"
906b92e 606
                },
906b92e 607
                {
906b92e 608
                  "type": "FIELD",
906b92e 609
                  "name": "returns",
906b92e 610
                  "content": {
906b92e 611
                    "type": "SYMBOL",
906b92e 612
                    "name": "type"
906b92e 613
                  }
906b92e 614
                }
906b92e 615
              ]
906b92e 616
            },
906b92e 617
            {
906b92e 618
              "type": "BLANK"
906b92e 619
            }
906b92e 620
          ]
906b92e 621
        }
906b92e 622
      ]
906b92e 623
    },
4bd2c1c 624
    "enum": {
4bd2c1c 625
      "type": "SEQ",
4bd2c1c 626
      "members": [
fd085d9 627
        {
fd085d9 628
          "type": "STRING",
fd085d9 629
          "value": "enum"
fd085d9 630
        },
4bd2c1c 631
        {
4bd2c1c 632
          "type": "FIELD",
4bd2c1c 633
          "name": "name",
4bd2c1c 634
          "content": {
4bd2c1c 635
            "type": "SYMBOL",
f997bee 636
            "name": "type_identifier"
4bd2c1c 637
          }
4bd2c1c 638
        },
287b97c 639
        {
287b97c 640
          "type": "FIELD",
287b97c 641
          "name": "generics",
287b97c 642
          "content": {
287b97c 643
            "type": "CHOICE",
287b97c 644
            "members": [
287b97c 645
              {
287b97c 646
                "type": "SYMBOL",
287b97c 647
                "name": "generics"
287b97c 648
              },
287b97c 649
              {
287b97c 650
                "type": "BLANK"
287b97c 651
              }
287b97c 652
            ]
287b97c 653
          }
287b97c 654
        },
8554271 655
        {
5f2f962 656
          "type": "CHOICE",
5f2f962 657
          "members": [
5f2f962 658
            {
5f2f962 659
              "type": "CHOICE",
5f2f962 660
              "members": [
5f2f962 661
                {
5f2f962 662
                  "type": "FIELD",
5f2f962 663
                  "name": "implements",
5f2f962 664
                  "content": {
8554271 665
                    "type": "SEQ",
8554271 666
                    "members": [
8554271 667
                      {
5f2f962 668
                        "type": "STRING",
5f2f962 669
                        "value": "("
8554271 670
                      },
8554271 671
                      {
5f2f962 672
                        "type": "SEQ",
5f2f962 673
                        "members": [
5f2f962 674
                          {
5f2f962 675
                            "type": "SYMBOL",
5f2f962 676
                            "name": "type_identifier"
5f2f962 677
                          },
5f2f962 678
                          {
5f2f962 679
                            "type": "REPEAT",
5f2f962 680
                            "content": {
5f2f962 681
                              "type": "SEQ",
5f2f962 682
                              "members": [
5f2f962 683
                                {
5f2f962 684
                                  "type": "STRING",
5f2f962 685
                                  "value": ","
5f2f962 686
                                },
5f2f962 687
                                {
5f2f962 688
                                  "type": "SYMBOL",
5f2f962 689
                                  "name": "type_identifier"
5f2f962 690
                                }
5f2f962 691
                              ]
8554271 692
                            }
5f2f962 693
                          }
5f2f962 694
                        ]
5f2f962 695
                      },
5f2f962 696
                      {
5f2f962 697
                        "type": "STRING",
5f2f962 698
                        "value": ")"
8554271 699
                      }
8554271 700
                    ]
8554271 701
                  }
5f2f962 702
                },
5f2f962 703
                {
5f2f962 704
                  "type": "FIELD",
5f2f962 705
                  "name": "params",
5f2f962 706
                  "content": {
5f2f962 707
                    "type": "SEQ",
5f2f962 708
                    "members": [
5f2f962 709
                      {
5f2f962 710
                        "type": "STRING",
5f2f962 711
                        "value": "("
5f2f962 712
                      },
5f2f962 713
                      {
5f2f962 714
                        "type": "SEQ",
5f2f962 715
                        "members": [
5f2f962 716
                          {
5f2f962 717
                            "type": "SYMBOL",
5f2f962 718
                            "name": "enum_param"
5f2f962 719
                          },
5f2f962 720
                          {
5f2f962 721
                            "type": "REPEAT",
5f2f962 722
                            "content": {
5f2f962 723
                              "type": "SEQ",
5f2f962 724
                              "members": [
5f2f962 725
                                {
5f2f962 726
                                  "type": "STRING",
5f2f962 727
                                  "value": ","
5f2f962 728
                                },
5f2f962 729
                                {
5f2f962 730
                                  "type": "SYMBOL",
5f2f962 731
                                  "name": "enum_param"
5f2f962 732
                                }
5f2f962 733
                              ]
5f2f962 734
                            }
5f2f962 735
                          }
5f2f962 736
                        ]
5f2f962 737
                      },
5f2f962 738
                      {
5f2f962 739
                        "type": "STRING",
5f2f962 740
                        "value": ")"
5f2f962 741
                      }
5f2f962 742
                    ]
5f2f962 743
                  }
5f2f962 744
                }
5f2f962 745
              ]
5f2f962 746
            },
5f2f962 747
            {
5f2f962 748
              "type": "BLANK"
5f2f962 749
            }
5f2f962 750
          ]
8554271 751
        },
4bd2c1c 752
        {
4bd2c1c 753
          "type": "STRING",
f997bee 754
          "value": "="
f997bee 755
        },
f997bee 756
        {
f997bee 757
          "type": "SYMBOL",
f997bee 758
          "name": "_indent"
4bd2c1c 759
        },
4bd2c1c 760
        {
fd085d9 761
          "type": "CHOICE",
fd085d9 762
          "members": [
fd085d9 763
            {
fd085d9 764
              "type": "REPEAT",
fd085d9 765
              "content": {
5de508e 766
                "type": "ALIAS",
5de508e 767
                "content": {
5de508e 768
                  "type": "SYMBOL",
5de508e 769
                  "name": "enum_field"
5de508e 770
                },
5de508e 771
                "named": true,
5de508e 772
                "value": "field"
f997bee 773
              }
fd085d9 774
            },
fd085d9 775
            {
fd085d9 776
              "type": "BLANK"
fd085d9 777
            }
fd085d9 778
          ]
fd085d9 779
        },
f047082 780
        {
f047082 781
          "type": "FIELD",
f047082 782
          "name": "methods",
f047082 783
          "content": {
f047082 784
            "type": "CHOICE",
f047082 785
            "members": [
f047082 786
              {
f047082 787
                "type": "REPEAT",
f047082 788
                "content": {
f047082 789
                  "type": "SYMBOL",
f047082 790
                  "name": "fn"
f047082 791
                }
f047082 792
              },
f047082 793
              {
f047082 794
                "type": "BLANK"
f047082 795
              }
f047082 796
            ]
f047082 797
          }
f047082 798
        },
5d12d71 799
        {
f997bee 800
          "type": "SYMBOL",
f997bee 801
          "name": "_dedent"
4bd2c1c 802
        }
4bd2c1c 803
      ]
4bd2c1c 804
    },
8554271 805
    "enum_param": {
8554271 806
      "type": "SEQ",
8554271 807
      "members": [
8554271 808
        {
8554271 809
          "type": "FIELD",
8554271 810
          "name": "name",
8554271 811
          "content": {
8554271 812
            "type": "SYMBOL",
8554271 813
            "name": "var_identifier"
8554271 814
          }
8554271 815
        },
8554271 816
        {
8554271 817
          "type": "STRING",
8554271 818
          "value": ":"
8554271 819
        },
8554271 820
        {
8554271 821
          "type": "FIELD",
8554271 822
          "name": "type",
8554271 823
          "content": {
8554271 824
            "type": "SYMBOL",
8554271 825
            "name": "type"
8554271 826
          }
8554271 827
        }
8554271 828
      ]
8554271 829
    },
4bd2c1c 830
    "enum_field": {
4bd2c1c 831
      "type": "SEQ",
4bd2c1c 832
      "members": [
f997bee 833
        {
f997bee 834
          "type": "STRING",
f997bee 835
          "value": "|"
f997bee 836
        },
4bd2c1c 837
        {
4bd2c1c 838
          "type": "FIELD",
4bd2c1c 839
          "name": "name",
4bd2c1c 840
          "content": {
4bd2c1c 841
            "type": "SYMBOL",
f997bee 842
            "name": "type_identifier"
4bd2c1c 843
          }
4bd2c1c 844
        },
4bd2c1c 845
        {
f997bee 846
          "type": "FIELD",
f997bee 847
          "name": "parameters",
f997bee 848
          "content": {
f997bee 849
            "type": "CHOICE",
f997bee 850
            "members": [
f997bee 851
              {
8554271 852
                "type": "CHOICE",
4bd2c1c 853
                "members": [
4bd2c1c 854
                  {
f997bee 855
                    "type": "SEQ",
f997bee 856
                    "members": [
f997bee 857
                      {
8554271 858
                        "type": "STRING",
287b97c 859
                        "value": "("
8554271 860
                      },
8554271 861
                      {
8554271 862
                        "type": "SEQ",
c273ea5 863
                        "members": [
c273ea5 864
                          {
a43f3af 865
                            "type": "SYMBOL",
a43f3af 866
                            "name": "type"
c273ea5 867
                          },
c273ea5 868
                          {
8554271 869
                            "type": "REPEAT",
8554271 870
                            "content": {
8554271 871
                              "type": "SEQ",
8554271 872
                              "members": [
8554271 873
                                {
8554271 874
                                  "type": "STRING",
8554271 875
                                  "value": ","
8554271 876
                                },
8554271 877
                                {
a43f3af 878
                                  "type": "SYMBOL",
a43f3af 879
                                  "name": "type"
8554271 880
                                }
8554271 881
                              ]
8554271 882
                            }
c273ea5 883
                          }
c273ea5 884
                        ]
f997bee 885
                      },
f997bee 886
                      {
8554271 887
                        "type": "STRING",
287b97c 888
                        "value": ")"
8554271 889
                      }
8554271 890
                    ]
8554271 891
                  },
3a2119e 892
                  {
3a2119e 893
                    "type": "SEQ",
3a2119e 894
                    "members": [
3a2119e 895
                      {
3a2119e 896
                        "type": "STRING",
3a2119e 897
                        "value": "("
3a2119e 898
                      },
3a2119e 899
                      {
3a2119e 900
                        "type": "SEQ",
3a2119e 901
                        "members": [
3a2119e 902
                          {
3a2119e 903
                            "type": "SYMBOL",
3a2119e 904
                            "name": "enum_named_field"
3a2119e 905
                          },
3a2119e 906
                          {
3a2119e 907
                            "type": "REPEAT",
3a2119e 908
                            "content": {
3a2119e 909
                              "type": "SEQ",
3a2119e 910
                              "members": [
3a2119e 911
                                {
3a2119e 912
                                  "type": "STRING",
3a2119e 913
                                  "value": ","
3a2119e 914
                                },
3a2119e 915
                                {
3a2119e 916
                                  "type": "SYMBOL",
3a2119e 917
                                  "name": "enum_named_field"
3a2119e 918
                                }
3a2119e 919
                              ]
3a2119e 920
                            }
3a2119e 921
                          }
3a2119e 922
                        ]
3a2119e 923
                      },
3a2119e 924
                      {
3a2119e 925
                        "type": "STRING",
3a2119e 926
                        "value": ")"
3a2119e 927
                      }
3a2119e 928
                    ]
3a2119e 929
                  },
8554271 930
                  {
8554271 931
                    "type": "SEQ",
8554271 932
                    "members": [
8554271 933
                      {
8554271 934
                        "type": "STRING",
8554271 935
                        "value": "("
8554271 936
                      },
8554271 937
                      {
8554271 938
                        "type": "SEQ",
8554271 939
                        "members": [
8554271 940
                          {
8554271 941
                            "type": "SYMBOL",
8554271 942
                            "name": "expression"
8554271 943
                          },
8554271 944
                          {
8554271 945
                            "type": "REPEAT",
8554271 946
                            "content": {
8554271 947
                              "type": "SEQ",
c273ea5 948
                              "members": [
c273ea5 949
                                {
8554271 950
                                  "type": "STRING",
8554271 951
                                  "value": ","
c273ea5 952
                                },
c273ea5 953
                                {
c273ea5 954
                                  "type": "SYMBOL",
8554271 955
                                  "name": "expression"
c273ea5 956
                                }
c273ea5 957
                              ]
f997bee 958
                            }
8554271 959
                          }
8554271 960
                        ]
8554271 961
                      },
8554271 962
                      {
8554271 963
                        "type": "STRING",
8554271 964
                        "value": ")"
f997bee 965
                      }
f997bee 966
                    ]
4bd2c1c 967
                  }
4bd2c1c 968
                ]
f997bee 969
              },
f997bee 970
              {
f997bee 971
                "type": "BLANK"
4bd2c1c 972
              }
f997bee 973
            ]
f997bee 974
          }
4bd2c1c 975
        }
4bd2c1c 976
      ]
4bd2c1c 977
    },
3a2119e 978
    "enum_named_field": {
3a2119e 979
      "type": "SEQ",
3a2119e 980
      "members": [
3a2119e 981
        {
3a2119e 982
          "type": "FIELD",
3a2119e 983
          "name": "name",
3a2119e 984
          "content": {
3a2119e 985
            "type": "SYMBOL",
3a2119e 986
            "name": "var_identifier"
3a2119e 987
          }
3a2119e 988
        },
3a2119e 989
        {
3a2119e 990
          "type": "STRING",
3a2119e 991
          "value": ":"
3a2119e 992
        },
3a2119e 993
        {
3a2119e 994
          "type": "FIELD",
3a2119e 995
          "name": "type",
3a2119e 996
          "content": {
3a2119e 997
            "type": "SYMBOL",
3a2119e 998
            "name": "type"
3a2119e 999
          }
3a2119e 1000
        }
3a2119e 1001
      ]
3a2119e 1002
    },
4bd2c1c 1003
    "fn": {
9e7927c 1004
      "type": "PREC_LEFT",
9e7927c 1005
      "value": 0,
9e7927c 1006
      "content": {
9e7927c 1007
        "type": "SEQ",
9e7927c 1008
        "members": [
a271f34 1009
          {
a271f34 1010
            "type": "FIELD",
a271f34 1011
            "name": "externKw",
a271f34 1012
            "content": {
a271f34 1013
              "type": "CHOICE",
a271f34 1014
              "members": [
a271f34 1015
                {
a271f34 1016
                  "type": "STRING",
a271f34 1017
                  "value": "extern"
a271f34 1018
                },
a271f34 1019
                {
a271f34 1020
                  "type": "BLANK"
a271f34 1021
                }
a271f34 1022
              ]
a271f34 1023
            }
a271f34 1024
          },
c06ddba 1025
          {
c06ddba 1026
            "type": "STRING",
c06ddba 1027
            "value": "fun"
c06ddba 1028
          },
9e7927c 1029
          {
9e7927c 1030
            "type": "FIELD",
9e7927c 1031
            "name": "name",
9e7927c 1032
            "content": {
9e7927c 1033
              "type": "SYMBOL",
9e7927c 1034
              "name": "fn_identifier"
9e7927c 1035
            }
9e7927c 1036
          },
9e7927c 1037
          {
9e7927c 1038
            "type": "FIELD",
9e7927c 1039
            "name": "params",
9e7927c 1040
            "content": {
9e7927c 1041
              "type": "SEQ",
9e7927c 1042
              "members": [
9e7927c 1043
                {
9e7927c 1044
                  "type": "STRING",
9e7927c 1045
                  "value": "("
9e7927c 1046
                },
9e7927c 1047
                {
9e7927c 1048
                  "type": "CHOICE",
9e7927c 1049
                  "members": [
9e7927c 1050
                    {
9e7927c 1051
                      "type": "SEQ",
9e7927c 1052
                      "members": [
9e7927c 1053
                        {
141de54 1054
                          "type": "CHOICE",
141de54 1055
                          "members": [
141de54 1056
                            {
141de54 1057
                              "type": "SYMBOL",
141de54 1058
                              "name": "self"
141de54 1059
                            },
141de54 1060
                            {
141de54 1061
                              "type": "SYMBOL",
141de54 1062
                              "name": "param"
141de54 1063
                            }
141de54 1064
                          ]
9e7927c 1065
                        },
9e7927c 1066
                        {
9e7927c 1067
                          "type": "REPEAT",
9e7927c 1068
                          "content": {
9e7927c 1069
                            "type": "SEQ",
9e7927c 1070
                            "members": [
9e7927c 1071
                              {
9e7927c 1072
                                "type": "STRING",
9e7927c 1073
                                "value": ","
9e7927c 1074
                              },
9e7927c 1075
                              {
141de54 1076
                                "type": "CHOICE",
141de54 1077
                                "members": [
141de54 1078
                                  {
141de54 1079
                                    "type": "SYMBOL",
141de54 1080
                                    "name": "self"
141de54 1081
                                  },
141de54 1082
                                  {
141de54 1083
                                    "type": "SYMBOL",
141de54 1084
                                    "name": "param"
141de54 1085
                                  }
141de54 1086
                                ]
9e7927c 1087
                              }
9e7927c 1088
                            ]
9e7927c 1089
                          }
9e7927c 1090
                        }
9e7927c 1091
                      ]
9e7927c 1092
                    },
9e7927c 1093
                    {
9e7927c 1094
                      "type": "BLANK"
9e7927c 1095
                    }
9e7927c 1096
                  ]
9e7927c 1097
                },
9e7927c 1098
                {
9e7927c 1099
                  "type": "STRING",
9e7927c 1100
                  "value": ")"
9e7927c 1101
                }
9e7927c 1102
              ]
9e7927c 1103
            }
9e7927c 1104
          },
9e7927c 1105
          {
9e7927c 1106
            "type": "FIELD",
9e7927c 1107
            "name": "returns",
9e7927c 1108
            "content": {
9e7927c 1109
              "type": "CHOICE",
9e7927c 1110
              "members": [
9e7927c 1111
                {
9e7927c 1112
                  "type": "SEQ",
9e7927c 1113
                  "members": [
9e7927c 1114
                    {
9e7927c 1115
                      "type": "STRING",
9e7927c 1116
                      "value": "->"
9e7927c 1117
                    },
9e7927c 1118
                    {
9e7927c 1119
                      "type": "SYMBOL",
8f91d27 1120
                      "name": "type"
9e7927c 1121
                    }
9e7927c 1122
                  ]
9e7927c 1123
                },
9e7927c 1124
                {
9e7927c 1125
                  "type": "BLANK"
9e7927c 1126
                }
9e7927c 1127
              ]
9e7927c 1128
            }
9e7927c 1129
          },
9e7927c 1130
          {
a271f34 1131
            "type": "CHOICE",
a271f34 1132
            "members": [
a271f34 1133
              {
a271f34 1134
                "type": "FIELD",
a271f34 1135
                "name": "body",
a271f34 1136
                "content": {
a271f34 1137
                  "type": "SEQ",
9e7927c 1138
                  "members": [
9e7927c 1139
                    {
a271f34 1140
                      "type": "STRING",
a271f34 1141
                      "value": "="
9e7927c 1142
                    },
9e7927c 1143
                    {
a271f34 1144
                      "type": "CHOICE",
a271f34 1145
                      "members": [
a271f34 1146
                        {
a271f34 1147
                          "type": "SYMBOL",
a271f34 1148
                          "name": "expression"
a271f34 1149
                        },
a271f34 1150
                        {
a271f34 1151
                          "type": "SYMBOL",
a271f34 1152
                          "name": "body"
a271f34 1153
                        }
a271f34 1154
                      ]
9e7927c 1155
                    }
9e7927c 1156
                  ]
9e7927c 1157
                }
a271f34 1158
              },
a271f34 1159
              {
a271f34 1160
                "type": "BLANK"
a271f34 1161
              }
a271f34 1162
            ]
5d12d71 1163
          }
9e7927c 1164
        ]
9e7927c 1165
      }
4bd2c1c 1166
    },
4bd2c1c 1167
    "body": {
4bd2c1c 1168
      "type": "SEQ",
4bd2c1c 1169
      "members": [
4bd2c1c 1170
        {
f997bee 1171
          "type": "SYMBOL",
f997bee 1172
          "name": "_indent"
4bd2c1c 1173
        },
4bd2c1c 1174
        {
4bd2c1c 1175
          "type": "REPEAT",
4bd2c1c 1176
          "content": {
4bd2c1c 1177
            "type": "SYMBOL",
4bd2c1c 1178
            "name": "_statement"
4bd2c1c 1179
          }
4bd2c1c 1180
        },
4bd2c1c 1181
        {
f997bee 1182
          "type": "SYMBOL",
f997bee 1183
          "name": "_dedent"
4bd2c1c 1184
        }
4bd2c1c 1185
      ]
4bd2c1c 1186
    },
a271f34 1187
    "test": {
a271f34 1188
      "type": "SEQ",
a271f34 1189
      "members": [
a271f34 1190
        {
a271f34 1191
          "type": "STRING",
a271f34 1192
          "value": "test"
a271f34 1193
        },
a271f34 1194
        {
a271f34 1195
          "type": "FIELD",
a271f34 1196
          "name": "name",
a271f34 1197
          "content": {
a271f34 1198
            "type": "SYMBOL",
a271f34 1199
            "name": "string"
a271f34 1200
          }
a271f34 1201
        },
a271f34 1202
        {
a271f34 1203
          "type": "FIELD",
a271f34 1204
          "name": "body",
a271f34 1205
          "content": {
a271f34 1206
            "type": "SYMBOL",
a271f34 1207
            "name": "body"
a271f34 1208
          }
a271f34 1209
        }
a271f34 1210
      ]
a271f34 1211
    },
4bd2c1c 1212
    "_statement": {
4bd2c1c 1213
      "type": "CHOICE",
4bd2c1c 1214
      "members": [
4bd2c1c 1215
        {
4bd2c1c 1216
          "type": "SYMBOL",
5d12d71 1217
          "name": "assign"
4bd2c1c 1218
        },
4bd2c1c 1219
        {
4bd2c1c 1220
          "type": "SYMBOL",
5d12d71 1221
          "name": "break"
5d12d71 1222
        },
4bd2c1c 1223
        {
4bd2c1c 1224
          "type": "SYMBOL",
5d12d71 1225
          "name": "continue"
4bd2c1c 1226
        },
4bd2c1c 1227
        {
4bd2c1c 1228
          "type": "SYMBOL",
5d12d71 1229
          "name": "assert"
4bd2c1c 1230
        },
4bd2c1c 1231
        {
4bd2c1c 1232
          "type": "SYMBOL",
5d12d71 1233
          "name": "for"
4bd2c1c 1234
        },
4bd2c1c 1235
        {
4bd2c1c 1236
          "type": "SYMBOL",
5d12d71 1237
          "name": "while"
4bd2c1c 1238
        },
4bd2c1c 1239
        {
4bd2c1c 1240
          "type": "SYMBOL",
fc68ba7 1241
          "name": "if"
fc68ba7 1242
        },
fc68ba7 1243
        {
fc68ba7 1244
          "type": "SYMBOL",
fc68ba7 1245
          "name": "match"
fc68ba7 1246
        },
fc68ba7 1247
        {
fc68ba7 1248
          "type": "SYMBOL",
fc68ba7 1249
          "name": "return"
4bd2c1c 1250
        },
4bd2c1c 1251
        {
f997bee 1252
          "type": "SYMBOL",
f997bee 1253
          "name": "todo"
5d12d71 1254
        },
5d12d71 1255
        {
f997bee 1256
          "type": "SYMBOL",
aeaba6f 1257
          "name": "expression"
4bd2c1c 1258
        }
4bd2c1c 1259
      ]
4bd2c1c 1260
    },
58cc293 1261
    "const": {
58cc293 1262
      "type": "SEQ",
58cc293 1263
      "members": [
58cc293 1264
        {
e9b4405 1265
          "type": "SYMBOL",
e9b4405 1266
          "name": "const_identifier"
58cc293 1267
        },
58cc293 1268
        {
58cc293 1269
          "type": "STRING",
58cc293 1270
          "value": "="
58cc293 1271
        },
58cc293 1272
        {
e9b4405 1273
          "type": "SYMBOL",
e9b4405 1274
          "name": "expression"
58cc293 1275
        }
58cc293 1276
      ]
58cc293 1277
    },
391c8e4 1278
    "field_target": {
391c8e4 1279
      "type": "SEQ",
391c8e4 1280
      "members": [
391c8e4 1281
        {
391c8e4 1282
          "type": "FIELD",
391c8e4 1283
          "name": "object",
391c8e4 1284
          "content": {
391c8e4 1285
            "type": "SYMBOL",
391c8e4 1286
            "name": "primary_expression"
391c8e4 1287
          }
391c8e4 1288
        },
391c8e4 1289
        {
391c8e4 1290
          "type": "STRING",
391c8e4 1291
          "value": "."
391c8e4 1292
        },
391c8e4 1293
        {
391c8e4 1294
          "type": "FIELD",
391c8e4 1295
          "name": "member",
391c8e4 1296
          "content": {
391c8e4 1297
            "type": "SYMBOL",
391c8e4 1298
            "name": "fn_identifier"
391c8e4 1299
          }
391c8e4 1300
        }
391c8e4 1301
      ]
391c8e4 1302
    },
f997bee 1303
    "assign": {
9e7927c 1304
      "type": "SEQ",
9e7927c 1305
      "members": [
9e7927c 1306
        {
e9b4405 1307
          "type": "SEQ",
e9b4405 1308
          "members": [
e9b4405 1309
            {
391c8e4 1310
              "type": "CHOICE",
391c8e4 1311
              "members": [
391c8e4 1312
                {
391c8e4 1313
                  "type": "SYMBOL",
391c8e4 1314
                  "name": "var_identifier"
391c8e4 1315
                },
391c8e4 1316
                {
391c8e4 1317
                  "type": "SYMBOL",
391c8e4 1318
                  "name": "field_target"
391c8e4 1319
                }
391c8e4 1320
              ]
e9b4405 1321
            },
e9b4405 1322
            {
e9b4405 1323
              "type": "REPEAT",
e9b4405 1324
              "content": {
e9b4405 1325
                "type": "SEQ",
e9b4405 1326
                "members": [
e9b4405 1327
                  {
e9b4405 1328
                    "type": "STRING",
e9b4405 1329
                    "value": ","
e9b4405 1330
                  },
e9b4405 1331
                  {
391c8e4 1332
                    "type": "CHOICE",
391c8e4 1333
                    "members": [
391c8e4 1334
                      {
391c8e4 1335
                        "type": "SYMBOL",
391c8e4 1336
                        "name": "var_identifier"
391c8e4 1337
                      },
391c8e4 1338
                      {
391c8e4 1339
                        "type": "SYMBOL",
391c8e4 1340
                        "name": "field_target"
391c8e4 1341
                      }
391c8e4 1342
                    ]
e9b4405 1343
                  }
e9b4405 1344
                ]
9e7927c 1345
              }
e9b4405 1346
            }
e9b4405 1347
          ]
9e7927c 1348
        },
9e7927c 1349
        {
a271f34 1350
          "type": "FIELD",
a271f34 1351
          "name": "op",
a271f34 1352
          "content": {
a271f34 1353
            "type": "CHOICE",
a271f34 1354
            "members": [
a271f34 1355
              {
a271f34 1356
                "type": "STRING",
a271f34 1357
                "value": "="
a271f34 1358
              },
a271f34 1359
              {
a271f34 1360
                "type": "STRING",
a271f34 1361
                "value": ":="
a271f34 1362
              }
a271f34 1363
            ]
a271f34 1364
          }
9e7927c 1365
        },
9e7927c 1366
        {
e9b4405 1367
          "type": "SEQ",
e9b4405 1368
          "members": [
e9b4405 1369
            {
e9b4405 1370
              "type": "SYMBOL",
e9b4405 1371
              "name": "expression"
e9b4405 1372
            },
e9b4405 1373
            {
e9b4405 1374
              "type": "REPEAT",
e9b4405 1375
              "content": {
e9b4405 1376
                "type": "SEQ",
e9b4405 1377
                "members": [
e9b4405 1378
                  {
e9b4405 1379
                    "type": "STRING",
e9b4405 1380
                    "value": ","
e9b4405 1381
                  },
e9b4405 1382
                  {
e9b4405 1383
                    "type": "SYMBOL",
e9b4405 1384
                    "name": "expression"
e9b4405 1385
                  }
e9b4405 1386
                ]
9e7927c 1387
              }
e9b4405 1388
            }
e9b4405 1389
          ]
9e7927c 1390
        }
9e7927c 1391
      ]
9e7927c 1392
    },
f997bee 1393
    "assert": {
4bd2c1c 1394
      "type": "SEQ",
4bd2c1c 1395
      "members": [
4bd2c1c 1396
        {
4bd2c1c 1397
          "type": "STRING",
f997bee 1398
          "value": "assert"
4bd2c1c 1399
        },
4bd2c1c 1400
        {
f997bee 1401
          "type": "SYMBOL",
f997bee 1402
          "name": "expression"
4bd2c1c 1403
        }
a271f34 1404
      ]
a271f34 1405
    },
f997bee 1406
    "return": {
f502d22 1407
      "type": "PREC_RIGHT",
f502d22 1408
      "value": 2,
f997bee 1409
      "content": {
f997bee 1410
        "type": "SEQ",
f997bee 1411
        "members": [
f997bee 1412
          {
f997bee 1413
            "type": "STRING",
f997bee 1414
            "value": "return"
f997bee 1415
          },
f997bee 1416
          {
f997bee 1417
            "type": "CHOICE",
f997bee 1418
            "members": [
f997bee 1419
              {
f997bee 1420
                "type": "SYMBOL",
f997bee 1421
                "name": "expression"
f997bee 1422
              },
f997bee 1423
              {
f997bee 1424
                "type": "BLANK"
f997bee 1425
              }
f997bee 1426
            ]
f997bee 1427
          }
f997bee 1428
        ]
f997bee 1429
      }
f997bee 1430
    },
5d12d71 1431
    "break": {
5d12d71 1432
      "type": "PREC_LEFT",
5d12d71 1433
      "value": 0,
5d12d71 1434
      "content": {
5d12d71 1435
        "type": "STRING",
5d12d71 1436
        "value": "break"
5d12d71 1437
      }
5d12d71 1438
    },
5d12d71 1439
    "continue": {
5d12d71 1440
      "type": "PREC_LEFT",
5d12d71 1441
      "value": 0,
5d12d71 1442
      "content": {
5d12d71 1443
        "type": "STRING",
5d12d71 1444
        "value": "continue"
5d12d71 1445
      }
5d12d71 1446
    },
f997bee 1447
    "todo": {
f997bee 1448
      "type": "PREC_LEFT",
f997bee 1449
      "value": 0,
f997bee 1450
      "content": {
f997bee 1451
        "type": "STRING",
f997bee 1452
        "value": "todo"
f997bee 1453
      }
f997bee 1454
    },
fc68ba7 1455
    "if": {
4bd2c1c 1456
      "type": "SEQ",
4bd2c1c 1457
      "members": [
4bd2c1c 1458
        {
4bd2c1c 1459
          "type": "STRING",
5d12d71 1460
          "value": "if"
4bd2c1c 1461
        },
4bd2c1c 1462
        {
4bd2c1c 1463
          "type": "FIELD",
4bd2c1c 1464
          "name": "condition",
4bd2c1c 1465
          "content": {
4bd2c1c 1466
            "type": "SYMBOL",
4bd2c1c 1467
            "name": "expression"
4bd2c1c 1468
          }
4bd2c1c 1469
        },
4bd2c1c 1470
        {
4bd2c1c 1471
          "type": "FIELD",
5d12d71 1472
          "name": "body",
4bd2c1c 1473
          "content": {
4bd2c1c 1474
            "type": "SYMBOL",
5d12d71 1475
            "name": "body"
4bd2c1c 1476
          }
4bd2c1c 1477
        },
4bd2c1c 1478
        {
4bd2c1c 1479
          "type": "REPEAT",
4bd2c1c 1480
          "content": {
4bd2c1c 1481
            "type": "FIELD",
4bd2c1c 1482
            "name": "alternative",
4bd2c1c 1483
            "content": {
4bd2c1c 1484
              "type": "SYMBOL",
fc68ba7 1485
              "name": "else_if"
4bd2c1c 1486
            }
4bd2c1c 1487
          }
4bd2c1c 1488
        },
4bd2c1c 1489
        {
4bd2c1c 1490
          "type": "CHOICE",
4bd2c1c 1491
          "members": [
4bd2c1c 1492
            {
4bd2c1c 1493
              "type": "FIELD",
9e7927c 1494
              "name": "otherwise",
4bd2c1c 1495
              "content": {
4bd2c1c 1496
                "type": "SYMBOL",
fc68ba7 1497
                "name": "else"
4bd2c1c 1498
              }
4bd2c1c 1499
            },
4bd2c1c 1500
            {
4bd2c1c 1501
              "type": "BLANK"
4bd2c1c 1502
            }
4bd2c1c 1503
          ]
4bd2c1c 1504
        }
4bd2c1c 1505
      ]
4bd2c1c 1506
    },
fc68ba7 1507
    "else_if": {
4bd2c1c 1508
      "type": "SEQ",
4bd2c1c 1509
      "members": [
4bd2c1c 1510
        {
4bd2c1c 1511
          "type": "STRING",
4bd2c1c 1512
          "value": "else if"
4bd2c1c 1513
        },
4bd2c1c 1514
        {
4bd2c1c 1515
          "type": "FIELD",
4bd2c1c 1516
          "name": "condition",
4bd2c1c 1517
          "content": {
4bd2c1c 1518
            "type": "SYMBOL",
4bd2c1c 1519
            "name": "expression"
4bd2c1c 1520
          }
4bd2c1c 1521
        },
4bd2c1c 1522
        {
4bd2c1c 1523
          "type": "FIELD",
5d12d71 1524
          "name": "body",
4bd2c1c 1525
          "content": {
4bd2c1c 1526
            "type": "SYMBOL",
5d12d71 1527
            "name": "body"
4bd2c1c 1528
          }
4bd2c1c 1529
        }
4bd2c1c 1530
      ]
4bd2c1c 1531
    },
fc68ba7 1532
    "else": {
4bd2c1c 1533
      "type": "SEQ",
4bd2c1c 1534
      "members": [
4bd2c1c 1535
        {
4bd2c1c 1536
          "type": "STRING",
4bd2c1c 1537
          "value": "else"
4bd2c1c 1538
        },
4bd2c1c 1539
        {
4bd2c1c 1540
          "type": "FIELD",
4bd2c1c 1541
          "name": "body",
4bd2c1c 1542
          "content": {
4bd2c1c 1543
            "type": "SYMBOL",
5d12d71 1544
            "name": "body"
4bd2c1c 1545
          }
4bd2c1c 1546
        }
4bd2c1c 1547
      ]
4bd2c1c 1548
    },
5d12d71 1549
    "for": {
4bd2c1c 1550
      "type": "SEQ",
4bd2c1c 1551
      "members": [
4bd2c1c 1552
        {
4bd2c1c 1553
          "type": "STRING",
4bd2c1c 1554
          "value": "for"
4bd2c1c 1555
        },
4bd2c1c 1556
        {
4bd2c1c 1557
          "type": "FIELD",
4bd2c1c 1558
          "name": "left",
4bd2c1c 1559
          "content": {
4bd2c1c 1560
            "type": "SEQ",
4bd2c1c 1561
            "members": [
4bd2c1c 1562
              {
4bd2c1c 1563
                "type": "SYMBOL",
9e7927c 1564
                "name": "var_identifier"
4bd2c1c 1565
              },
4bd2c1c 1566
              {
4bd2c1c 1567
                "type": "REPEAT",
4bd2c1c 1568
                "content": {
4bd2c1c 1569
                  "type": "SEQ",
4bd2c1c 1570
                  "members": [
4bd2c1c 1571
                    {
4bd2c1c 1572
                      "type": "STRING",
4bd2c1c 1573
                      "value": ","
4bd2c1c 1574
                    },
4bd2c1c 1575
                    {
4bd2c1c 1576
                      "type": "SYMBOL",
9e7927c 1577
                      "name": "var_identifier"
4bd2c1c 1578
                    }
4bd2c1c 1579
                  ]
4bd2c1c 1580
                }
4bd2c1c 1581
              }
4bd2c1c 1582
            ]
4bd2c1c 1583
          }
4bd2c1c 1584
        },
4bd2c1c 1585
        {
4bd2c1c 1586
          "type": "STRING",
a271f34 1587
          "value": ":="
a271f34 1588
        },
a271f34 1589
        {
a271f34 1590
          "type": "STRING",
a271f34 1591
          "value": "range"
4bd2c1c 1592
        },
4bd2c1c 1593
        {
4bd2c1c 1594
          "type": "FIELD",
4bd2c1c 1595
          "name": "right",
4bd2c1c 1596
          "content": {
4bd2c1c 1597
            "type": "SYMBOL",
4bd2c1c 1598
            "name": "primary_expression"
4bd2c1c 1599
          }
4bd2c1c 1600
        },
4bd2c1c 1601
        {
4bd2c1c 1602
          "type": "FIELD",
4bd2c1c 1603
          "name": "body",
4bd2c1c 1604
          "content": {
4bd2c1c 1605
            "type": "SYMBOL",
4bd2c1c 1606
            "name": "body"
4bd2c1c 1607
          }
4bd2c1c 1608
        }
4bd2c1c 1609
      ]
4bd2c1c 1610
    },
5d12d71 1611
    "while": {
4bd2c1c 1612
      "type": "SEQ",
4bd2c1c 1613
      "members": [
4bd2c1c 1614
        {
4bd2c1c 1615
          "type": "STRING",
4bd2c1c 1616
          "value": "while"
4bd2c1c 1617
        },
4bd2c1c 1618
        {
4bd2c1c 1619
          "type": "FIELD",
4bd2c1c 1620
          "name": "condition",
4bd2c1c 1621
          "content": {
4bd2c1c 1622
            "type": "SYMBOL",
4bd2c1c 1623
            "name": "expression"
f997bee 1624
          }
2634d00 1625
        },
4bd2c1c 1626
        {
4bd2c1c 1627
          "type": "FIELD",
4bd2c1c 1628
          "name": "body",
4bd2c1c 1629
          "content": {
4bd2c1c 1630
            "type": "SYMBOL",
5d12d71 1631
            "name": "body"
4bd2c1c 1632
          }
4bd2c1c 1633
        }
4bd2c1c 1634
      ]
4bd2c1c 1635
    },
fc68ba7 1636
    "dotted_name": {
fc68ba7 1637
      "type": "PREC",
fc68ba7 1638
      "value": 1,
4bd2c1c 1639
      "content": {
4bd2c1c 1640
        "type": "SEQ",
4bd2c1c 1641
        "members": [
4bd2c1c 1642
          {
4bd2c1c 1643
            "type": "SYMBOL",
9e7927c 1644
            "name": "var_identifier"
4bd2c1c 1645
          },
4bd2c1c 1646
          {
4bd2c1c 1647
            "type": "REPEAT",
4bd2c1c 1648
            "content": {
4bd2c1c 1649
              "type": "SEQ",
4bd2c1c 1650
              "members": [
4bd2c1c 1651
                {
4bd2c1c 1652
                  "type": "STRING",
4bd2c1c 1653
                  "value": "."
4bd2c1c 1654
                },
4bd2c1c 1655
                {
4bd2c1c 1656
                  "type": "SYMBOL",
9e7927c 1657
                  "name": "var_identifier"
4bd2c1c 1658
                }
4bd2c1c 1659
              ]
4bd2c1c 1660
            }
4bd2c1c 1661
          }
4bd2c1c 1662
        ]
4bd2c1c 1663
      }
4bd2c1c 1664
    },
fc68ba7 1665
    "match": {
f997bee 1666
      "type": "PREC_LEFT",
f997bee 1667
      "value": 0,
f997bee 1668
      "content": {
608d862 1669
        "type": "CHOICE",
f997bee 1670
        "members": [
f997bee 1671
          {
f997bee 1672
            "type": "SEQ",
f997bee 1673
            "members": [
f997bee 1674
              {
608d862 1675
                "type": "STRING",
608d862 1676
                "value": "match"
608d862 1677
              },
608d862 1678
              {
608d862 1679
                "type": "SEQ",
608d862 1680
                "members": [
608d862 1681
                  {
608d862 1682
                    "type": "FIELD",
608d862 1683
                    "name": "subject",
608d862 1684
                    "content": {
608d862 1685
                      "type": "SYMBOL",
608d862 1686
                      "name": "expression"
608d862 1687
                    }
608d862 1688
                  },
608d862 1689
                  {
608d862 1690
                    "type": "REPEAT",
608d862 1691
                    "content": {
608d862 1692
                      "type": "SEQ",
608d862 1693
                      "members": [
608d862 1694
                        {
608d862 1695
                          "type": "STRING",
608d862 1696
                          "value": ","
608d862 1697
                        },
608d862 1698
                        {
608d862 1699
                          "type": "FIELD",
608d862 1700
                          "name": "subject",
608d862 1701
                          "content": {
608d862 1702
                            "type": "SYMBOL",
608d862 1703
                            "name": "expression"
608d862 1704
                          }
608d862 1705
                        }
608d862 1706
                      ]
608d862 1707
                    }
608d862 1708
                  }
608d862 1709
                ]
608d862 1710
              },
608d862 1711
              {
608d862 1712
                "type": "SYMBOL",
608d862 1713
                "name": "_indent"
f997bee 1714
              },
f997bee 1715
              {
f997bee 1716
                "type": "REPEAT",
f997bee 1717
                "content": {
608d862 1718
                  "type": "FIELD",
608d862 1719
                  "name": "case",
608d862 1720
                  "content": {
608d862 1721
                    "type": "SYMBOL",
608d862 1722
                    "name": "case"
608d862 1723
                  }
f997bee 1724
                }
608d862 1725
              },
608d862 1726
              {
608d862 1727
                "type": "SYMBOL",
608d862 1728
                "name": "_dedent"
f997bee 1729
              }
f997bee 1730
            ]
f997bee 1731
          },
f997bee 1732
          {
608d862 1733
            "type": "SEQ",
608d862 1734
            "members": [
608d862 1735
              {
608d862 1736
                "type": "STRING",
608d862 1737
                "value": "match"
608d862 1738
              },
608d862 1739
              {
608d862 1740
                "type": "SYMBOL",
608d862 1741
                "name": "_indent"
608d862 1742
              },
608d862 1743
              {
c06ddba 1744
                "type": "CHOICE",
c06ddba 1745
                "members": [
c06ddba 1746
                  {
c06ddba 1747
                    "type": "SEQ",
c06ddba 1748
                    "members": [
c06ddba 1749
                      {
c06ddba 1750
                        "type": "FIELD",
c06ddba 1751
                        "name": "case",
c06ddba 1752
                        "content": {
c06ddba 1753
                          "type": "SYMBOL",
c06ddba 1754
                          "name": "guard_case"
c06ddba 1755
                        }
c06ddba 1756
                      },
c06ddba 1757
                      {
c06ddba 1758
                        "type": "REPEAT",
c06ddba 1759
                        "content": {
c06ddba 1760
                          "type": "SEQ",
c06ddba 1761
                          "members": [
c06ddba 1762
                            {
c06ddba 1763
                              "type": "SYMBOL",
c06ddba 1764
                              "name": "_arm_break"
c06ddba 1765
                            },
c06ddba 1766
                            {
c06ddba 1767
                              "type": "FIELD",
c06ddba 1768
                              "name": "case",
c06ddba 1769
                              "content": {
c06ddba 1770
                                "type": "SYMBOL",
c06ddba 1771
                                "name": "guard_case"
c06ddba 1772
                              }
c06ddba 1773
                            }
c06ddba 1774
                          ]
c06ddba 1775
                        }
c06ddba 1776
                      }
c06ddba 1777
                    ]
c06ddba 1778
                  },
c06ddba 1779
                  {
c06ddba 1780
                    "type": "BLANK"
608d862 1781
                  }
c06ddba 1782
                ]
608d862 1783
              },
608d862 1784
              {
fc68ba7 1785
                "type": "SYMBOL",
608d862 1786
                "name": "_dedent"
fc68ba7 1787
              }
608d862 1788
            ]
fc68ba7 1789
          }
f997bee 1790
        ]
f997bee 1791
      }
fc68ba7 1792
    },
fc68ba7 1793
    "case": {
fc68ba7 1794
      "type": "SEQ",
fc68ba7 1795
      "members": [
fc68ba7 1796
        {
fc68ba7 1797
          "type": "SEQ",
fc68ba7 1798
          "members": [
fc68ba7 1799
            {
fc68ba7 1800
              "type": "SYMBOL",
fc68ba7 1801
              "name": "case_pattern"
fc68ba7 1802
            },
fc68ba7 1803
            {
fc68ba7 1804
              "type": "REPEAT",
fc68ba7 1805
              "content": {
fc68ba7 1806
                "type": "SEQ",
fc68ba7 1807
                "members": [
fc68ba7 1808
                  {
fc68ba7 1809
                    "type": "STRING",
fc68ba7 1810
                    "value": ","
fc68ba7 1811
                  },
fc68ba7 1812
                  {
fc68ba7 1813
                    "type": "SYMBOL",
fc68ba7 1814
                    "name": "case_pattern"
fc68ba7 1815
                  }
fc68ba7 1816
                ]
fc68ba7 1817
              }
fc68ba7 1818
            }
fc68ba7 1819
          ]
fc68ba7 1820
        },
4a2384c 1821
        {
4a2384c 1822
          "type": "CHOICE",
4a2384c 1823
          "members": [
4a2384c 1824
            {
4a2384c 1825
              "type": "SEQ",
4a2384c 1826
              "members": [
4a2384c 1827
                {
4a2384c 1828
                  "type": "STRING",
4a2384c 1829
                  "value": "when"
4a2384c 1830
                },
4a2384c 1831
                {
4a2384c 1832
                  "type": "FIELD",
4a2384c 1833
                  "name": "guard",
4a2384c 1834
                  "content": {
4a2384c 1835
                    "type": "SYMBOL",
4a2384c 1836
                    "name": "expression"
4a2384c 1837
                  }
4a2384c 1838
                }
4a2384c 1839
              ]
4a2384c 1840
            },
4a2384c 1841
            {
4a2384c 1842
              "type": "BLANK"
4a2384c 1843
            }
4a2384c 1844
          ]
4a2384c 1845
        },
fc68ba7 1846
        {
fc68ba7 1847
          "type": "STRING",
f997bee 1848
          "value": "=>"
fc68ba7 1849
        },
fc68ba7 1850
        {
fc68ba7 1851
          "type": "FIELD",
fc68ba7 1852
          "name": "body",
fc68ba7 1853
          "content": {
660674c 1854
            "type": "CHOICE",
660674c 1855
            "members": [
660674c 1856
              {
660674c 1857
                "type": "SYMBOL",
660674c 1858
                "name": "expression"
660674c 1859
              },
660674c 1860
              {
660674c 1861
                "type": "SYMBOL",
660674c 1862
                "name": "body"
660674c 1863
              }
660674c 1864
            ]
4bd2c1c 1865
          }
fc68ba7 1866
        }
fc68ba7 1867
      ]
4bd2c1c 1868
    },
fc68ba7 1869
    "case_pattern": {
4bd2c1c 1870
      "type": "PREC",
4bd2c1c 1871
      "value": 1,
4bd2c1c 1872
      "content": {
4bd2c1c 1873
        "type": "CHOICE",
4bd2c1c 1874
        "members": [
4bd2c1c 1875
          {
4bd2c1c 1876
            "type": "SYMBOL",
4bd2c1c 1877
            "name": "class_pattern"
4bd2c1c 1878
          },
f502d22 1879
          {
f502d22 1880
            "type": "SYMBOL",
f502d22 1881
            "name": "type_identifier"
f502d22 1882
          },
4bd2c1c 1883
          {
4bd2c1c 1884
            "type": "SYMBOL",
4bd2c1c 1885
            "name": "string"
4bd2c1c 1886
          },
4bd2c1c 1887
          {
fc68ba7 1888
            "type": "SYMBOL",
fc68ba7 1889
            "name": "integer"
4bd2c1c 1890
          },
4bd2c1c 1891
          {
4bd2c1c 1892
            "type": "SYMBOL",
fc68ba7 1893
            "name": "float"
4bd2c1c 1894
          },
4bd2c1c 1895
          {
4bd2c1c 1896
            "type": "SYMBOL",
4bd2c1c 1897
            "name": "dotted_name"
4bd2c1c 1898
          },
4bd2c1c 1899
          {
4bd2c1c 1900
            "type": "STRING",
4bd2c1c 1901
            "value": "_"
4bd2c1c 1902
          }
4bd2c1c 1903
        ]
4bd2c1c 1904
      }
4bd2c1c 1905
    },
608d862 1906
    "guard_case": {
608d862 1907
      "type": "SEQ",
608d862 1908
      "members": [
608d862 1909
        {
608d862 1910
          "type": "STRING",
608d862 1911
          "value": "|"
608d862 1912
        },
608d862 1913
        {
608d862 1914
          "type": "FIELD",
608d862 1915
          "name": "guard",
608d862 1916
          "content": {
608d862 1917
            "type": "CHOICE",
608d862 1918
            "members": [
608d862 1919
              {
608d862 1920
                "type": "SYMBOL",
608d862 1921
                "name": "expression"
608d862 1922
              },
608d862 1923
              {
608d862 1924
                "type": "STRING",
608d862 1925
                "value": "_"
608d862 1926
              }
608d862 1927
            ]
608d862 1928
          }
608d862 1929
        },
608d862 1930
        {
608d862 1931
          "type": "STRING",
608d862 1932
          "value": "=>"
608d862 1933
        },
608d862 1934
        {
608d862 1935
          "type": "FIELD",
608d862 1936
          "name": "body",
608d862 1937
          "content": {
608d862 1938
            "type": "CHOICE",
608d862 1939
            "members": [
608d862 1940
              {
608d862 1941
                "type": "SYMBOL",
608d862 1942
                "name": "expression"
608d862 1943
              },
608d862 1944
              {
608d862 1945
                "type": "SYMBOL",
608d862 1946
                "name": "body"
608d862 1947
              }
608d862 1948
            ]
608d862 1949
          }
608d862 1950
        }
608d862 1951
      ]
608d862 1952
    },
4bd2c1c 1953
    "class_pattern": {
4bd2c1c 1954
      "type": "SEQ",
4bd2c1c 1955
      "members": [
4bd2c1c 1956
        {
4bd2c1c 1957
          "type": "SYMBOL",
f502d22 1958
          "name": "type_identifier"
4bd2c1c 1959
        },
4bd2c1c 1960
        {
4bd2c1c 1961
          "type": "STRING",
4bd2c1c 1962
          "value": "("
4bd2c1c 1963
        },
4bd2c1c 1964
        {
4bd2c1c 1965
          "type": "CHOICE",
4bd2c1c 1966
          "members": [
4bd2c1c 1967
            {
4bd2c1c 1968
              "type": "SEQ",
4bd2c1c 1969
              "members": [
4bd2c1c 1970
                {
4bd2c1c 1971
                  "type": "SEQ",
4bd2c1c 1972
                  "members": [
4bd2c1c 1973
                    {
4bd2c1c 1974
                      "type": "SYMBOL",
4bd2c1c 1975
                      "name": "case_pattern"
4bd2c1c 1976
                    },
4bd2c1c 1977
                    {
4bd2c1c 1978
                      "type": "REPEAT",
4bd2c1c 1979
                      "content": {
4bd2c1c 1980
                        "type": "SEQ",
4bd2c1c 1981
                        "members": [
4bd2c1c 1982
                          {
4bd2c1c 1983
                            "type": "STRING",
4bd2c1c 1984
                            "value": ","
4bd2c1c 1985
                          },
4bd2c1c 1986
                          {
4bd2c1c 1987
                            "type": "SYMBOL",
4bd2c1c 1988
                            "name": "case_pattern"
4bd2c1c 1989
                          }
4bd2c1c 1990
                        ]
4bd2c1c 1991
                      }
4bd2c1c 1992
                    }
4bd2c1c 1993
                  ]
4bd2c1c 1994
                },
4bd2c1c 1995
                {
4bd2c1c 1996
                  "type": "CHOICE",
4bd2c1c 1997
                  "members": [
4bd2c1c 1998
                    {
4bd2c1c 1999
                      "type": "STRING",
4bd2c1c 2000
                      "value": ","
4bd2c1c 2001
                    },
4bd2c1c 2002
                    {
4bd2c1c 2003
                      "type": "BLANK"
4bd2c1c 2004
                    }
4bd2c1c 2005
                  ]
4bd2c1c 2006
                }
4bd2c1c 2007
              ]
4bd2c1c 2008
            },
4bd2c1c 2009
            {
4bd2c1c 2010
              "type": "BLANK"
4bd2c1c 2011
            }
4bd2c1c 2012
          ]
4bd2c1c 2013
        },
4bd2c1c 2014
        {
4bd2c1c 2015
          "type": "STRING",
4bd2c1c 2016
          "value": ")"
4bd2c1c 2017
        }
4bd2c1c 2018
      ]
4bd2c1c 2019
    },
4bd2c1c 2020
    "expression": {
4bd2c1c 2021
      "type": "CHOICE",
4bd2c1c 2022
      "members": [
4bd2c1c 2023
        {
4bd2c1c 2024
          "type": "SYMBOL",
4bd2c1c 2025
          "name": "comparison_operator"
4bd2c1c 2026
        },
4bd2c1c 2027
        {
4bd2c1c 2028
          "type": "SYMBOL",
4bd2c1c 2029
          "name": "not_operator"
4bd2c1c 2030
        },
4bd2c1c 2031
        {
4bd2c1c 2032
          "type": "SYMBOL",
4bd2c1c 2033
          "name": "boolean_operator"
4bd2c1c 2034
        },
906b92e 2035
        {
906b92e 2036
          "type": "SYMBOL",
906b92e 2037
          "name": "closure"
906b92e 2038
        },
4bd2c1c 2039
        {
4bd2c1c 2040
          "type": "SYMBOL",
4bd2c1c 2041
          "name": "primary_expression"
4bd2c1c 2042
        },
4bd2c1c 2043
        {
4bd2c1c 2044
          "type": "SYMBOL",
4bd2c1c 2045
          "name": "ternary_expression"
ec5336f 2046
        },
ec5336f 2047
        {
ec5336f 2048
          "type": "SYMBOL",
ec5336f 2049
          "name": "elvis_expression"
4bd2c1c 2050
        }
4bd2c1c 2051
      ]
4bd2c1c 2052
    },
4bd2c1c 2053
    "primary_expression": {
4bd2c1c 2054
      "type": "CHOICE",
4bd2c1c 2055
      "members": [
4bd2c1c 2056
        {
4bd2c1c 2057
          "type": "SYMBOL",
4bd2c1c 2058
          "name": "binary_operator"
4bd2c1c 2059
        },
efe15db 2060
        {
efe15db 2061
          "type": "SYMBOL",
c05610c 2062
          "name": "self"
efe15db 2063
        },
4bd2c1c 2064
        {
4bd2c1c 2065
          "type": "SYMBOL",
9e7927c 2066
          "name": "var_identifier"
4bd2c1c 2067
        },
efe15db 2068
        {
efe15db 2069
          "type": "SYMBOL",
f997bee 2070
          "name": "type_identifier"
efe15db 2071
        },
a271f34 2072
        {
a271f34 2073
          "type": "SYMBOL",
a271f34 2074
          "name": "const_identifier"
a271f34 2075
        },
4bd2c1c 2076
        {
4bd2c1c 2077
          "type": "SYMBOL",
4bd2c1c 2078
          "name": "string"
4bd2c1c 2079
        },
4bd2c1c 2080
        {
4bd2c1c 2081
          "type": "SYMBOL",
4bd2c1c 2082
          "name": "integer"
4bd2c1c 2083
        },
4bd2c1c 2084
        {
4bd2c1c 2085
          "type": "SYMBOL",
4bd2c1c 2086
          "name": "float"
4bd2c1c 2087
        },
4bd2c1c 2088
        {
4bd2c1c 2089
          "type": "SYMBOL",
5d12d71 2090
          "name": "unary_operator"
4bd2c1c 2091
        },
4bd2c1c 2092
        {
4bd2c1c 2093
          "type": "SYMBOL",
5d12d71 2094
          "name": "attribute"
4bd2c1c 2095
        },
af1776b 2096
        {
af1776b 2097
          "type": "SYMBOL",
af1776b 2098
          "name": "try_expression"
af1776b 2099
        },
43e5250 2100
        {
43e5250 2101
          "type": "SYMBOL",
43e5250 2102
          "name": "safe_attribute"
43e5250 2103
        },
4bd2c1c 2104
        {
4bd2c1c 2105
          "type": "SYMBOL",
f997bee 2106
          "name": "fn_call"
f997bee 2107
        },
f997bee 2108
        {
f997bee 2109
          "type": "SYMBOL",
d322d05 2110
          "name": "class_call"
4bd2c1c 2111
        },
4bd2c1c 2112
        {
4bd2c1c 2113
          "type": "SYMBOL",
4bd2c1c 2114
          "name": "parenthesized_expression"
4bd2c1c 2115
        }
4bd2c1c 2116
      ]
4bd2c1c 2117
    },
4bd2c1c 2118
    "parenthesized_expression": {
4bd2c1c 2119
      "type": "PREC",
4bd2c1c 2120
      "value": 1,
4bd2c1c 2121
      "content": {
4bd2c1c 2122
        "type": "SEQ",
4bd2c1c 2123
        "members": [
4bd2c1c 2124
          {
4bd2c1c 2125
            "type": "STRING",
f997bee 2126
            "value": "{"
4bd2c1c 2127
          },
4bd2c1c 2128
          {
4bd2c1c 2129
            "type": "SYMBOL",
4bd2c1c 2130
            "name": "expression"
4bd2c1c 2131
          },
4bd2c1c 2132
          {
4bd2c1c 2133
            "type": "STRING",
f997bee 2134
            "value": "}"
4bd2c1c 2135
          }
4bd2c1c 2136
        ]
4bd2c1c 2137
      }
4bd2c1c 2138
    },
4bd2c1c 2139
    "not_operator": {
4bd2c1c 2140
      "type": "PREC",
4bd2c1c 2141
      "value": 12,
4bd2c1c 2142
      "content": {
4bd2c1c 2143
        "type": "SEQ",
4bd2c1c 2144
        "members": [
4bd2c1c 2145
          {
4bd2c1c 2146
            "type": "STRING",
4bd2c1c 2147
            "value": "!"
4bd2c1c 2148
          },
4bd2c1c 2149
          {
4bd2c1c 2150
            "type": "FIELD",
4bd2c1c 2151
            "name": "argument",
4bd2c1c 2152
            "content": {
4bd2c1c 2153
              "type": "SYMBOL",
4bd2c1c 2154
              "name": "expression"
4bd2c1c 2155
            }
4bd2c1c 2156
          }
4bd2c1c 2157
        ]
4bd2c1c 2158
      }
4bd2c1c 2159
    },
4bd2c1c 2160
    "boolean_operator": {
4bd2c1c 2161
      "type": "CHOICE",
4bd2c1c 2162
      "members": [
4bd2c1c 2163
        {
fc68ba7 2164
          "type": "PREC_LEFT",
fc68ba7 2165
          "value": 11,
fc68ba7 2166
          "content": {
fc68ba7 2167
            "type": "SEQ",
fc68ba7 2168
            "members": [
fc68ba7 2169
              {
fc68ba7 2170
                "type": "FIELD",
fc68ba7 2171
                "name": "left",
fc68ba7 2172
                "content": {
fc68ba7 2173
                  "type": "SYMBOL",
fc68ba7 2174
                  "name": "expression"
fc68ba7 2175
                }
fc68ba7 2176
              },
fc68ba7 2177
              {
fc68ba7 2178
                "type": "FIELD",
fc68ba7 2179
                "name": "operator",
fc68ba7 2180
                "content": {
fc68ba7 2181
                  "type": "STRING",
fc68ba7 2182
                  "value": "&&"
fc68ba7 2183
                }
fc68ba7 2184
              },
fc68ba7 2185
              {
fc68ba7 2186
                "type": "FIELD",
fc68ba7 2187
                "name": "right",
fc68ba7 2188
                "content": {
fc68ba7 2189
                  "type": "SYMBOL",
fc68ba7 2190
                  "name": "expression"
fc68ba7 2191
                }
5d12d71 2192
              }
fc68ba7 2193
            ]
fc68ba7 2194
          }
4bd2c1c 2195
        },
4bd2c1c 2196
        {
fc68ba7 2197
          "type": "PREC_LEFT",
fc68ba7 2198
          "value": 10,
fc68ba7 2199
          "content": {
fc68ba7 2200
            "type": "SEQ",
fc68ba7 2201
            "members": [
fc68ba7 2202
              {
fc68ba7 2203
                "type": "FIELD",
fc68ba7 2204
                "name": "left",
fc68ba7 2205
                "content": {
fc68ba7 2206
                  "type": "SYMBOL",
fc68ba7 2207
                  "name": "expression"
fc68ba7 2208
                }
fc68ba7 2209
              },
fc68ba7 2210
              {
fc68ba7 2211
                "type": "FIELD",
fc68ba7 2212
                "name": "operator",
fc68ba7 2213
                "content": {
fc68ba7 2214
                  "type": "STRING",
fc68ba7 2215
                  "value": "||"
fc68ba7 2216
                }
fc68ba7 2217
              },
fc68ba7 2218
              {
fc68ba7 2219
                "type": "FIELD",
fc68ba7 2220
                "name": "right",
fc68ba7 2221
                "content": {
fc68ba7 2222
                  "type": "SYMBOL",
fc68ba7 2223
                  "name": "expression"
fc68ba7 2224
                }
5d12d71 2225
              }
fc68ba7 2226
            ]
fc68ba7 2227
          }
4bd2c1c 2228
        }
4bd2c1c 2229
      ]
4bd2c1c 2230
    },
4bd2c1c 2231
    "binary_operator": {
4bd2c1c 2232
      "type": "CHOICE",
4bd2c1c 2233
      "members": [
4bd2c1c 2234
        {
4bd2c1c 2235
          "type": "PREC_LEFT",
4bd2c1c 2236
          "value": 18,
4bd2c1c 2237
          "content": {
4bd2c1c 2238
            "type": "SEQ",
4bd2c1c 2239
            "members": [
4bd2c1c 2240
              {
4bd2c1c 2241
                "type": "FIELD",
4bd2c1c 2242
                "name": "left",
4bd2c1c 2243
                "content": {
4bd2c1c 2244
                  "type": "SYMBOL",
4bd2c1c 2245
                  "name": "primary_expression"
4bd2c1c 2246
                }
4bd2c1c 2247
              },
4bd2c1c 2248
              {
4bd2c1c 2249
                "type": "FIELD",
4bd2c1c 2250
                "name": "operator",
4bd2c1c 2251
                "content": {
4bd2c1c 2252
                  "type": "STRING",
4bd2c1c 2253
                  "value": "+"
4bd2c1c 2254
                }
4bd2c1c 2255
              },
4bd2c1c 2256
              {
4bd2c1c 2257
                "type": "FIELD",
4bd2c1c 2258
                "name": "right",
4bd2c1c 2259
                "content": {
4bd2c1c 2260
                  "type": "SYMBOL",
4bd2c1c 2261
                  "name": "primary_expression"
4bd2c1c 2262
                }
4bd2c1c 2263
              }
4bd2c1c 2264
            ]
4bd2c1c 2265
          }
4bd2c1c 2266
        },
4bd2c1c 2267
        {
4bd2c1c 2268
          "type": "PREC_LEFT",
4bd2c1c 2269
          "value": 18,
4bd2c1c 2270
          "content": {
4bd2c1c 2271
            "type": "SEQ",
4bd2c1c 2272
            "members": [
4bd2c1c 2273
              {
4bd2c1c 2274
                "type": "FIELD",
4bd2c1c 2275
                "name": "left",
4bd2c1c 2276
                "content": {
4bd2c1c 2277
                  "type": "SYMBOL",
4bd2c1c 2278
                  "name": "primary_expression"
4bd2c1c 2279
                }
4bd2c1c 2280
              },
4bd2c1c 2281
              {
4bd2c1c 2282
                "type": "FIELD",
4bd2c1c 2283
                "name": "operator",
4bd2c1c 2284
                "content": {
4bd2c1c 2285
                  "type": "STRING",
4bd2c1c 2286
                  "value": "-"
4bd2c1c 2287
                }
4bd2c1c 2288
              },
4bd2c1c 2289
              {
4bd2c1c 2290
                "type": "FIELD",
4bd2c1c 2291
                "name": "right",
4bd2c1c 2292
                "content": {
4bd2c1c 2293
                  "type": "SYMBOL",
4bd2c1c 2294
                  "name": "primary_expression"
4bd2c1c 2295
                }
4bd2c1c 2296
              }
4bd2c1c 2297
            ]
4bd2c1c 2298
          }
4bd2c1c 2299
        },
4bd2c1c 2300
        {
4bd2c1c 2301
          "type": "PREC_LEFT",
4bd2c1c 2302
          "value": 19,
4bd2c1c 2303
          "content": {
4bd2c1c 2304
            "type": "SEQ",
4bd2c1c 2305
            "members": [
4bd2c1c 2306
              {
4bd2c1c 2307
                "type": "FIELD",
4bd2c1c 2308
                "name": "left",
4bd2c1c 2309
                "content": {
4bd2c1c 2310
                  "type": "SYMBOL",
4bd2c1c 2311
                  "name": "primary_expression"
4bd2c1c 2312
                }
4bd2c1c 2313
              },
4bd2c1c 2314
              {
4bd2c1c 2315
                "type": "FIELD",
4bd2c1c 2316
                "name": "operator",
4bd2c1c 2317
                "content": {
4bd2c1c 2318
                  "type": "STRING",
4bd2c1c 2319
                  "value": "*"
4bd2c1c 2320
                }
4bd2c1c 2321
              },
4bd2c1c 2322
              {
4bd2c1c 2323
                "type": "FIELD",
4bd2c1c 2324
                "name": "right",
4bd2c1c 2325
                "content": {
4bd2c1c 2326
                  "type": "SYMBOL",
4bd2c1c 2327
                  "name": "primary_expression"
4bd2c1c 2328
                }
4bd2c1c 2329
              }
4bd2c1c 2330
            ]
4bd2c1c 2331
          }
4bd2c1c 2332
        },
4bd2c1c 2333
        {
4bd2c1c 2334
          "type": "PREC_LEFT",
4bd2c1c 2335
          "value": 19,
4bd2c1c 2336
          "content": {
4bd2c1c 2337
            "type": "SEQ",
4bd2c1c 2338
            "members": [
4bd2c1c 2339
              {
4bd2c1c 2340
                "type": "FIELD",
4bd2c1c 2341
                "name": "left",
4bd2c1c 2342
                "content": {
4bd2c1c 2343
                  "type": "SYMBOL",
4bd2c1c 2344
                  "name": "primary_expression"
4bd2c1c 2345
                }
4bd2c1c 2346
              },
4bd2c1c 2347
              {
4bd2c1c 2348
                "type": "FIELD",
4bd2c1c 2349
                "name": "operator",
4bd2c1c 2350
                "content": {
4bd2c1c 2351
                  "type": "STRING",
4bd2c1c 2352
                  "value": "/"
4bd2c1c 2353
                }
4bd2c1c 2354
              },
4bd2c1c 2355
              {
4bd2c1c 2356
                "type": "FIELD",
4bd2c1c 2357
                "name": "right",
4bd2c1c 2358
                "content": {
4bd2c1c 2359
                  "type": "SYMBOL",
4bd2c1c 2360
                  "name": "primary_expression"
4bd2c1c 2361
                }
4bd2c1c 2362
              }
4bd2c1c 2363
            ]
4bd2c1c 2364
          }
4bd2c1c 2365
        },
4bd2c1c 2366
        {
4bd2c1c 2367
          "type": "PREC_LEFT",
4bd2c1c 2368
          "value": 19,
4bd2c1c 2369
          "content": {
4bd2c1c 2370
            "type": "SEQ",
4bd2c1c 2371
            "members": [
4bd2c1c 2372
              {
4bd2c1c 2373
                "type": "FIELD",
4bd2c1c 2374
                "name": "left",
4bd2c1c 2375
                "content": {
4bd2c1c 2376
                  "type": "SYMBOL",
4bd2c1c 2377
                  "name": "primary_expression"
4bd2c1c 2378
                }
4bd2c1c 2379
              },
4bd2c1c 2380
              {
4bd2c1c 2381
                "type": "FIELD",
4bd2c1c 2382
                "name": "operator",
4bd2c1c 2383
                "content": {
4bd2c1c 2384
                  "type": "STRING",
4bd2c1c 2385
                  "value": "%"
4bd2c1c 2386
                }
4bd2c1c 2387
              },
4bd2c1c 2388
              {
4bd2c1c 2389
                "type": "FIELD",
4bd2c1c 2390
                "name": "right",
4bd2c1c 2391
                "content": {
4bd2c1c 2392
                  "type": "SYMBOL",
4bd2c1c 2393
                  "name": "primary_expression"
4bd2c1c 2394
                }
4bd2c1c 2395
              }
4bd2c1c 2396
            ]
4bd2c1c 2397
          }
4bd2c1c 2398
        },
4bd2c1c 2399
        {
4bd2c1c 2400
          "type": "PREC_LEFT",
4bd2c1c 2401
          "value": 14,
4bd2c1c 2402
          "content": {
4bd2c1c 2403
            "type": "SEQ",
4bd2c1c 2404
            "members": [
4bd2c1c 2405
              {
4bd2c1c 2406
                "type": "FIELD",
4bd2c1c 2407
                "name": "left",
4bd2c1c 2408
                "content": {
4bd2c1c 2409
                  "type": "SYMBOL",
4bd2c1c 2410
                  "name": "primary_expression"
4bd2c1c 2411
                }
4bd2c1c 2412
              },
4bd2c1c 2413
              {
4bd2c1c 2414
                "type": "FIELD",
4bd2c1c 2415
                "name": "operator",
4bd2c1c 2416
                "content": {
4bd2c1c 2417
                  "type": "STRING",
4bd2c1c 2418
                  "value": "|"
4bd2c1c 2419
                }
4bd2c1c 2420
              },
4bd2c1c 2421
              {
4bd2c1c 2422
                "type": "FIELD",
4bd2c1c 2423
                "name": "right",
4bd2c1c 2424
                "content": {
4bd2c1c 2425
                  "type": "SYMBOL",
4bd2c1c 2426
                  "name": "primary_expression"
4bd2c1c 2427
                }
4bd2c1c 2428
              }
4bd2c1c 2429
            ]
4bd2c1c 2430
          }
4bd2c1c 2431
        },
4bd2c1c 2432
        {
4bd2c1c 2433
          "type": "PREC_LEFT",
4bd2c1c 2434
          "value": 15,
4bd2c1c 2435
          "content": {
4bd2c1c 2436
            "type": "SEQ",
4bd2c1c 2437
            "members": [
4bd2c1c 2438
              {
4bd2c1c 2439
                "type": "FIELD",
4bd2c1c 2440
                "name": "left",
4bd2c1c 2441
                "content": {
4bd2c1c 2442
                  "type": "SYMBOL",
4bd2c1c 2443
                  "name": "primary_expression"
4bd2c1c 2444
                }
4bd2c1c 2445
              },
4bd2c1c 2446
              {
4bd2c1c 2447
                "type": "FIELD",
4bd2c1c 2448
                "name": "operator",
4bd2c1c 2449
                "content": {
4bd2c1c 2450
                  "type": "STRING",
4bd2c1c 2451
                  "value": "&"
4bd2c1c 2452
                }
4bd2c1c 2453
              },
4bd2c1c 2454
              {
4bd2c1c 2455
                "type": "FIELD",
4bd2c1c 2456
                "name": "right",
4bd2c1c 2457
                "content": {
4bd2c1c 2458
                  "type": "SYMBOL",
4bd2c1c 2459
                  "name": "primary_expression"
4bd2c1c 2460
                }
4bd2c1c 2461
              }
4bd2c1c 2462
            ]
4bd2c1c 2463
          }
4bd2c1c 2464
        },
4bd2c1c 2465
        {
4bd2c1c 2466
          "type": "PREC_LEFT",
4bd2c1c 2467
          "value": 16,
4bd2c1c 2468
          "content": {
4bd2c1c 2469
            "type": "SEQ",
4bd2c1c 2470
            "members": [
4bd2c1c 2471
              {
4bd2c1c 2472
                "type": "FIELD",
4bd2c1c 2473
                "name": "left",
4bd2c1c 2474
                "content": {
4bd2c1c 2475
                  "type": "SYMBOL",
4bd2c1c 2476
                  "name": "primary_expression"
4bd2c1c 2477
                }
4bd2c1c 2478
              },
4bd2c1c 2479
              {
4bd2c1c 2480
                "type": "FIELD",
4bd2c1c 2481
                "name": "operator",
4bd2c1c 2482
                "content": {
4bd2c1c 2483
                  "type": "STRING",
4bd2c1c 2484
                  "value": "^"
4bd2c1c 2485
                }
4bd2c1c 2486
              },
4bd2c1c 2487
              {
4bd2c1c 2488
                "type": "FIELD",
4bd2c1c 2489
                "name": "right",
4bd2c1c 2490
                "content": {
4bd2c1c 2491
                  "type": "SYMBOL",
4bd2c1c 2492
                  "name": "primary_expression"
4bd2c1c 2493
                }
4bd2c1c 2494
              }
4bd2c1c 2495
            ]
4bd2c1c 2496
          }
4bd2c1c 2497
        },
4bd2c1c 2498
        {
4bd2c1c 2499
          "type": "PREC_LEFT",
4bd2c1c 2500
          "value": 17,
4bd2c1c 2501
          "content": {
4bd2c1c 2502
            "type": "SEQ",
4bd2c1c 2503
            "members": [
4bd2c1c 2504
              {
4bd2c1c 2505
                "type": "FIELD",
4bd2c1c 2506
                "name": "left",
4bd2c1c 2507
                "content": {
4bd2c1c 2508
                  "type": "SYMBOL",
4bd2c1c 2509
                  "name": "primary_expression"
4bd2c1c 2510
                }
4bd2c1c 2511
              },
4bd2c1c 2512
              {
4bd2c1c 2513
                "type": "FIELD",
4bd2c1c 2514
                "name": "operator",
4bd2c1c 2515
                "content": {
4bd2c1c 2516
                  "type": "STRING",
4bd2c1c 2517
                  "value": "<<"
4bd2c1c 2518
                }
4bd2c1c 2519
              },
4bd2c1c 2520
              {
4bd2c1c 2521
                "type": "FIELD",
4bd2c1c 2522
                "name": "right",
4bd2c1c 2523
                "content": {
4bd2c1c 2524
                  "type": "SYMBOL",
4bd2c1c 2525
                  "name": "primary_expression"
4bd2c1c 2526
                }
4bd2c1c 2527
              }
4bd2c1c 2528
            ]
4bd2c1c 2529
          }
4bd2c1c 2530
        },
4bd2c1c 2531
        {
4bd2c1c 2532
          "type": "PREC_LEFT",
4bd2c1c 2533
          "value": 17,
4bd2c1c 2534
          "content": {
4bd2c1c 2535
            "type": "SEQ",
4bd2c1c 2536
            "members": [
4bd2c1c 2537
              {
4bd2c1c 2538
                "type": "FIELD",
4bd2c1c 2539
                "name": "left",
4bd2c1c 2540
                "content": {
4bd2c1c 2541
                  "type": "SYMBOL",
4bd2c1c 2542
                  "name": "primary_expression"
4bd2c1c 2543
                }
4bd2c1c 2544
              },
4bd2c1c 2545
              {
4bd2c1c 2546
                "type": "FIELD",
4bd2c1c 2547
                "name": "operator",
4bd2c1c 2548
                "content": {
4bd2c1c 2549
                  "type": "STRING",
4bd2c1c 2550
                  "value": ">>"
4bd2c1c 2551
                }
4bd2c1c 2552
              },
4bd2c1c 2553
              {
4bd2c1c 2554
                "type": "FIELD",
4bd2c1c 2555
                "name": "right",
4bd2c1c 2556
                "content": {
4bd2c1c 2557
                  "type": "SYMBOL",
4bd2c1c 2558
                  "name": "primary_expression"
4bd2c1c 2559
                }
4bd2c1c 2560
              }
4bd2c1c 2561
            ]
4bd2c1c 2562
          }
4bd2c1c 2563
        }
4bd2c1c 2564
      ]
4bd2c1c 2565
    },
4bd2c1c 2566
    "unary_operator": {
4bd2c1c 2567
      "type": "PREC",
4bd2c1c 2568
      "value": 20,
4bd2c1c 2569
      "content": {
4bd2c1c 2570
        "type": "SEQ",
4bd2c1c 2571
        "members": [
4bd2c1c 2572
          {
4bd2c1c 2573
            "type": "FIELD",
4bd2c1c 2574
            "name": "operator",
4bd2c1c 2575
            "content": {
4bd2c1c 2576
              "type": "CHOICE",
4bd2c1c 2577
              "members": [
4bd2c1c 2578
                {
4bd2c1c 2579
                  "type": "STRING",
4bd2c1c 2580
                  "value": "+"
4bd2c1c 2581
                },
4bd2c1c 2582
                {
4bd2c1c 2583
                  "type": "STRING",
4bd2c1c 2584
                  "value": "-"
4bd2c1c 2585
                }
4bd2c1c 2586
              ]
4bd2c1c 2587
            }
4bd2c1c 2588
          },
4bd2c1c 2589
          {
4bd2c1c 2590
            "type": "FIELD",
4bd2c1c 2591
            "name": "argument",
4bd2c1c 2592
            "content": {
4bd2c1c 2593
              "type": "SYMBOL",
4bd2c1c 2594
              "name": "primary_expression"
4bd2c1c 2595
            }
4bd2c1c 2596
          }
4bd2c1c 2597
        ]
4bd2c1c 2598
      }
4bd2c1c 2599
    },
4bd2c1c 2600
    "comparison_operator": {
4bd2c1c 2601
      "type": "PREC_LEFT",
4bd2c1c 2602
      "value": 13,
4bd2c1c 2603
      "content": {
4bd2c1c 2604
        "type": "SEQ",
4bd2c1c 2605
        "members": [
4bd2c1c 2606
          {
4bd2c1c 2607
            "type": "SYMBOL",
4bd2c1c 2608
            "name": "primary_expression"
4bd2c1c 2609
          },
4bd2c1c 2610
          {
5d12d71 2611
            "type": "FIELD",
5d12d71 2612
            "name": "operator",
4bd2c1c 2613
            "content": {
5d12d71 2614
              "type": "CHOICE",
4bd2c1c 2615
              "members": [
4bd2c1c 2616
                {
5d12d71 2617
                  "type": "STRING",
5d12d71 2618
                  "value": "<"
4bd2c1c 2619
                },
4bd2c1c 2620
                {
5d12d71 2621
                  "type": "STRING",
5d12d71 2622
                  "value": "<="
5d12d71 2623
                },
5d12d71 2624
                {
5d12d71 2625
                  "type": "STRING",
5d12d71 2626
                  "value": "=="
5d12d71 2627
                },
5d12d71 2628
                {
5d12d71 2629
                  "type": "STRING",
5d12d71 2630
                  "value": "!="
5d12d71 2631
                },
5d12d71 2632
                {
5d12d71 2633
                  "type": "STRING",
5d12d71 2634
                  "value": ">="
5d12d71 2635
                },
5d12d71 2636
                {
5d12d71 2637
                  "type": "STRING",
5d12d71 2638
                  "value": ">"
5d12d71 2639
                },
5d12d71 2640
                {
5d12d71 2641
                  "type": "STRING",
5d12d71 2642
                  "value": "<>"
4bd2c1c 2643
                }
4bd2c1c 2644
              ]
4bd2c1c 2645
            }
5d12d71 2646
          },
5d12d71 2647
          {
5d12d71 2648
            "type": "SYMBOL",
5d12d71 2649
            "name": "primary_expression"
4bd2c1c 2650
          }
4bd2c1c 2651
        ]
4bd2c1c 2652
      }
4bd2c1c 2653
    },
5d12d71 2654
    "closure": {
04d2270 2655
      "type": "PREC",
04d2270 2656
      "value": -2,
04d2270 2657
      "content": {
04d2270 2658
        "type": "SEQ",
04d2270 2659
        "members": [
04d2270 2660
          {
04d2270 2661
            "type": "STRING",
04d2270 2662
            "value": "|"
04d2270 2663
          },
04d2270 2664
          {
04d2270 2665
            "type": "FIELD",
04d2270 2666
            "name": "parameters",
04d2270 2667
            "content": {
04d2270 2668
              "type": "CHOICE",
04d2270 2669
              "members": [
04d2270 2670
                {
04d2270 2671
                  "type": "SEQ",
04d2270 2672
                  "members": [
04d2270 2673
                    {
04d2270 2674
                      "type": "SYMBOL",
04d2270 2675
                      "name": "var_identifier"
04d2270 2676
                    },
04d2270 2677
                    {
04d2270 2678
                      "type": "REPEAT",
04d2270 2679
                      "content": {
04d2270 2680
                        "type": "SEQ",
04d2270 2681
                        "members": [
04d2270 2682
                          {
04d2270 2683
                            "type": "STRING",
04d2270 2684
                            "value": ","
04d2270 2685
                          },
04d2270 2686
                          {
04d2270 2687
                            "type": "SYMBOL",
04d2270 2688
                            "name": "var_identifier"
04d2270 2689
                          }
04d2270 2690
                        ]
04d2270 2691
                      }
4bd2c1c 2692
                    }
04d2270 2693
                  ]
04d2270 2694
                },
04d2270 2695
                {
04d2270 2696
                  "type": "BLANK"
04d2270 2697
                }
04d2270 2698
              ]
04d2270 2699
            }
04d2270 2700
          },
04d2270 2701
          {
04d2270 2702
            "type": "STRING",
04d2270 2703
            "value": "|"
04d2270 2704
          },
04d2270 2705
          {
04d2270 2706
            "type": "FIELD",
04d2270 2707
            "name": "body",
04d2270 2708
            "content": {
04d2270 2709
              "type": "CHOICE",
04d2270 2710
              "members": [
04d2270 2711
                {
04d2270 2712
                  "type": "SYMBOL",
04d2270 2713
                  "name": "expression"
04d2270 2714
                },
04d2270 2715
                {
04d2270 2716
                  "type": "SYMBOL",
04d2270 2717
                  "name": "body"
04d2270 2718
                }
04d2270 2719
              ]
04d2270 2720
            }
4bd2c1c 2721
          }
04d2270 2722
        ]
04d2270 2723
      }
4bd2c1c 2724
    },
4bd2c1c 2725
    "attribute": {
4bd2c1c 2726
      "type": "PREC",
efe15db 2727
      "value": 23,
4bd2c1c 2728
      "content": {
4bd2c1c 2729
        "type": "SEQ",
4bd2c1c 2730
        "members": [
4bd2c1c 2731
          {
4bd2c1c 2732
            "type": "FIELD",
4bd2c1c 2733
            "name": "object",
4bd2c1c 2734
            "content": {
4bd2c1c 2735
              "type": "SYMBOL",
4bd2c1c 2736
              "name": "primary_expression"
4bd2c1c 2737
            }
4bd2c1c 2738
          },
4bd2c1c 2739
          {
4bd2c1c 2740
            "type": "STRING",
4bd2c1c 2741
            "value": "."
4bd2c1c 2742
          },
f997bee 2743
          {
f502d22 2744
            "type": "FIELD",
f502d22 2745
            "name": "member",
f502d22 2746
            "content": {
f502d22 2747
              "type": "SYMBOL",
f502d22 2748
              "name": "fn_identifier"
f502d22 2749
            }
f502d22 2750
          },
f502d22 2751
          {
f502d22 2752
            "type": "FIELD",
f502d22 2753
            "name": "arguments",
f502d22 2754
            "content": {
f502d22 2755
              "type": "CHOICE",
f502d22 2756
              "members": [
f502d22 2757
                {
f502d22 2758
                  "type": "SYMBOL",
f502d22 2759
                  "name": "fn_argument_list"
f502d22 2760
                },
f502d22 2761
                {
f502d22 2762
                  "type": "BLANK"
f502d22 2763
                }
f502d22 2764
              ]
f502d22 2765
            }
f997bee 2766
          }
f997bee 2767
        ]
f997bee 2768
      }
f997bee 2769
    },
af1776b 2770
    "try_expression": {
af1776b 2771
      "type": "SEQ",
af1776b 2772
      "members": [
af1776b 2773
        {
af1776b 2774
          "type": "FIELD",
af1776b 2775
          "name": "value",
af1776b 2776
          "content": {
af1776b 2777
            "type": "SYMBOL",
af1776b 2778
            "name": "primary_expression"
af1776b 2779
          }
af1776b 2780
        },
af1776b 2781
        {
af1776b 2782
          "type": "STRING",
af1776b 2783
          "value": "?"
af1776b 2784
        }
af1776b 2785
      ]
af1776b 2786
    },
43e5250 2787
    "safe_attribute": {
43e5250 2788
      "type": "PREC",
43e5250 2789
      "value": 23,
43e5250 2790
      "content": {
43e5250 2791
        "type": "SEQ",
43e5250 2792
        "members": [
43e5250 2793
          {
43e5250 2794
            "type": "FIELD",
43e5250 2795
            "name": "object",
43e5250 2796
            "content": {
43e5250 2797
              "type": "SYMBOL",
43e5250 2798
              "name": "primary_expression"
43e5250 2799
            }
43e5250 2800
          },
43e5250 2801
          {
43e5250 2802
            "type": "STRING",
43e5250 2803
            "value": "?."
43e5250 2804
          },
43e5250 2805
          {
43e5250 2806
            "type": "FIELD",
43e5250 2807
            "name": "member",
43e5250 2808
            "content": {
43e5250 2809
              "type": "SYMBOL",
43e5250 2810
              "name": "fn_identifier"
43e5250 2811
            }
43e5250 2812
          },
43e5250 2813
          {
43e5250 2814
            "type": "FIELD",
43e5250 2815
            "name": "arguments",
43e5250 2816
            "content": {
43e5250 2817
              "type": "CHOICE",
43e5250 2818
              "members": [
43e5250 2819
                {
43e5250 2820
                  "type": "SYMBOL",
43e5250 2821
                  "name": "fn_argument_list"
43e5250 2822
                },
43e5250 2823
                {
43e5250 2824
                  "type": "BLANK"
43e5250 2825
                }
43e5250 2826
              ]
43e5250 2827
            }
43e5250 2828
          }
43e5250 2829
        ]
43e5250 2830
      }
43e5250 2831
    },
f997bee 2832
    "fn_call": {
f997bee 2833
      "type": "PREC",
f997bee 2834
      "value": 23,
f997bee 2835
      "content": {
f997bee 2836
        "type": "SEQ",
f997bee 2837
        "members": [
4bd2c1c 2838
          {
4bd2c1c 2839
            "type": "FIELD",
f997bee 2840
            "name": "function",
4bd2c1c 2841
            "content": {
96ec67f 2842
              "type": "CHOICE",
96ec67f 2843
              "members": [
96ec67f 2844
                {
96ec67f 2845
                  "type": "SYMBOL",
96ec67f 2846
                  "name": "var_identifier"
96ec67f 2847
                },
96ec67f 2848
                {
96ec67f 2849
                  "type": "SYMBOL",
96ec67f 2850
                  "name": "type_identifier"
96ec67f 2851
                }
96ec67f 2852
              ]
4bd2c1c 2853
            }
f997bee 2854
          },
f997bee 2855
          {
f997bee 2856
            "type": "FIELD",
f997bee 2857
            "name": "arguments",
f997bee 2858
            "content": {
f997bee 2859
              "type": "SYMBOL",
0d8e2ab 2860
              "name": "fn_argument_list"
f997bee 2861
            }
4bd2c1c 2862
          }
4bd2c1c 2863
        ]
4bd2c1c 2864
      }
4bd2c1c 2865
    },
0d8e2ab 2866
    "fn_argument_list": {
4bd2c1c 2867
      "type": "SEQ",
4bd2c1c 2868
      "members": [
4bd2c1c 2869
        {
4bd2c1c 2870
          "type": "STRING",
4bd2c1c 2871
          "value": "("
4bd2c1c 2872
        },
4bd2c1c 2873
        {
4bd2c1c 2874
          "type": "CHOICE",
4bd2c1c 2875
          "members": [
4bd2c1c 2876
            {
4bd2c1c 2877
              "type": "SEQ",
4bd2c1c 2878
              "members": [
4bd2c1c 2879
                {
4bd2c1c 2880
                  "type": "CHOICE",
4bd2c1c 2881
                  "members": [
4bd2c1c 2882
                    {
4bd2c1c 2883
                      "type": "SYMBOL",
4bd2c1c 2884
                      "name": "expression"
4bd2c1c 2885
                    },
4bd2c1c 2886
                    {
4bd2c1c 2887
                      "type": "SYMBOL",
4bd2c1c 2888
                      "name": "keyword_argument"
4bd2c1c 2889
                    },
4bd2c1c 2890
                    {
4bd2c1c 2891
                      "type": "SYMBOL",
4bd2c1c 2892
                      "name": "pair_argument"
4bd2c1c 2893
                    }
4bd2c1c 2894
                  ]
4bd2c1c 2895
                },
4bd2c1c 2896
                {
4bd2c1c 2897
                  "type": "REPEAT",
4bd2c1c 2898
                  "content": {
4bd2c1c 2899
                    "type": "SEQ",
4bd2c1c 2900
                    "members": [
4bd2c1c 2901
                      {
4bd2c1c 2902
                        "type": "STRING",
4bd2c1c 2903
                        "value": ","
4bd2c1c 2904
                      },
4bd2c1c 2905
                      {
4bd2c1c 2906
                        "type": "CHOICE",
4bd2c1c 2907
                        "members": [
4bd2c1c 2908
                          {
4bd2c1c 2909
                            "type": "SYMBOL",
4bd2c1c 2910
                            "name": "expression"
4bd2c1c 2911
                          },
4bd2c1c 2912
                          {
4bd2c1c 2913
                            "type": "SYMBOL",
4bd2c1c 2914
                            "name": "keyword_argument"
4bd2c1c 2915
                          },
4bd2c1c 2916
                          {
4bd2c1c 2917
                            "type": "SYMBOL",
4bd2c1c 2918
                            "name": "pair_argument"
4bd2c1c 2919
                          }
4bd2c1c 2920
                        ]
4bd2c1c 2921
                      }
4bd2c1c 2922
                    ]
4bd2c1c 2923
                  }
4bd2c1c 2924
                }
4bd2c1c 2925
              ]
4bd2c1c 2926
            },
4bd2c1c 2927
            {
4bd2c1c 2928
              "type": "BLANK"
4bd2c1c 2929
            }
4bd2c1c 2930
          ]
4bd2c1c 2931
        },
4bd2c1c 2932
        {
4bd2c1c 2933
          "type": "CHOICE",
4bd2c1c 2934
          "members": [
4bd2c1c 2935
            {
4bd2c1c 2936
              "type": "STRING",
4bd2c1c 2937
              "value": ","
4bd2c1c 2938
            },
4bd2c1c 2939
            {
4bd2c1c 2940
              "type": "BLANK"
4bd2c1c 2941
            }
4bd2c1c 2942
          ]
4bd2c1c 2943
        },
4bd2c1c 2944
        {
4bd2c1c 2945
          "type": "STRING",
4bd2c1c 2946
          "value": ")"
4bd2c1c 2947
        }
4bd2c1c 2948
      ]
4bd2c1c 2949
    },
4bd2c1c 2950
    "keyword_argument": {
4bd2c1c 2951
      "type": "SEQ",
4bd2c1c 2952
      "members": [
4bd2c1c 2953
        {
4bd2c1c 2954
          "type": "FIELD",
4bd2c1c 2955
          "name": "name",
4bd2c1c 2956
          "content": {
4bd2c1c 2957
            "type": "SYMBOL",
9e7927c 2958
            "name": "var_identifier"
4bd2c1c 2959
          }
4bd2c1c 2960
        },
4bd2c1c 2961
        {
4bd2c1c 2962
          "type": "STRING",
efe15db 2963
          "value": "="
4bd2c1c 2964
        },
4bd2c1c 2965
        {
4bd2c1c 2966
          "type": "FIELD",
4bd2c1c 2967
          "name": "value",
4bd2c1c 2968
          "content": {
4bd2c1c 2969
            "type": "SYMBOL",
4bd2c1c 2970
            "name": "expression"
4bd2c1c 2971
          }
4bd2c1c 2972
        }
4bd2c1c 2973
      ]
4bd2c1c 2974
    },
4bd2c1c 2975
    "pair_argument": {
4bd2c1c 2976
      "type": "SEQ",
4bd2c1c 2977
      "members": [
4bd2c1c 2978
        {
4bd2c1c 2979
          "type": "FIELD",
4bd2c1c 2980
          "name": "name",
4bd2c1c 2981
          "content": {
4bd2c1c 2982
            "type": "SYMBOL",
4bd2c1c 2983
            "name": "string"
4bd2c1c 2984
          }
4bd2c1c 2985
        },
4bd2c1c 2986
        {
4bd2c1c 2987
          "type": "STRING",
4bd2c1c 2988
          "value": "=>"
4bd2c1c 2989
        },
4bd2c1c 2990
        {
4bd2c1c 2991
          "type": "FIELD",
4bd2c1c 2992
          "name": "value",
4bd2c1c 2993
          "content": {
4bd2c1c 2994
            "type": "SYMBOL",
4bd2c1c 2995
            "name": "expression"
4bd2c1c 2996
          }
4bd2c1c 2997
        }
f997bee 2998
      ]
f997bee 2999
    },
d322d05 3000
    "class_call": {
d322d05 3001
      "type": "PREC",
d322d05 3002
      "value": 23,
d322d05 3003
      "content": {
d322d05 3004
        "type": "SEQ",
d322d05 3005
        "members": [
d322d05 3006
          {
d322d05 3007
            "type": "FIELD",
d322d05 3008
            "name": "type",
d322d05 3009
            "content": {
d322d05 3010
              "type": "SYMBOL",
d322d05 3011
              "name": "type_identifier"
d322d05 3012
            }
d322d05 3013
          },
a271f34 3014
          {
a271f34 3015
            "type": "FIELD",
a271f34 3016
            "name": "generics",
a271f34 3017
            "content": {
a271f34 3018
              "type": "CHOICE",
a271f34 3019
              "members": [
a271f34 3020
                {
a271f34 3021
                  "type": "SEQ",
a271f34 3022
                  "members": [
a271f34 3023
                    {
a271f34 3024
                      "type": "STRING",
a271f34 3025
                      "value": "["
a271f34 3026
                    },
a271f34 3027
                    {
a271f34 3028
                      "type": "SEQ",
a271f34 3029
                      "members": [
a271f34 3030
                        {
a271f34 3031
                          "type": "SYMBOL",
a271f34 3032
                          "name": "type"
a271f34 3033
                        },
a271f34 3034
                        {
a271f34 3035
                          "type": "REPEAT",
a271f34 3036
                          "content": {
a271f34 3037
                            "type": "SEQ",
a271f34 3038
                            "members": [
a271f34 3039
                              {
a271f34 3040
                                "type": "STRING",
a271f34 3041
                                "value": ","
a271f34 3042
                              },
a271f34 3043
                              {
a271f34 3044
                                "type": "SYMBOL",
a271f34 3045
                                "name": "type"
a271f34 3046
                              }
a271f34 3047
                            ]
a271f34 3048
                          }
a271f34 3049
                        }
a271f34 3050
                      ]
a271f34 3051
                    },
a271f34 3052
                    {
a271f34 3053
                      "type": "STRING",
a271f34 3054
                      "value": "]"
a271f34 3055
                    }
a271f34 3056
                  ]
a271f34 3057
                },
a271f34 3058
                {
a271f34 3059
                  "type": "BLANK"
a271f34 3060
                }
a271f34 3061
              ]
a271f34 3062
            }
a271f34 3063
          },
d322d05 3064
          {
d322d05 3065
            "type": "FIELD",
d322d05 3066
            "name": "arguments",
d322d05 3067
            "content": {
d322d05 3068
              "type": "SYMBOL",
d322d05 3069
              "name": "class_argument_list"
d322d05 3070
            }
d322d05 3071
          }
d322d05 3072
        ]
d322d05 3073
      }
d322d05 3074
    },
d322d05 3075
    "class_argument_list": {
d322d05 3076
      "type": "SEQ",
d322d05 3077
      "members": [
d322d05 3078
        {
d322d05 3079
          "type": "STRING",
d322d05 3080
          "value": "("
d322d05 3081
        },
d322d05 3082
        {
d322d05 3083
          "type": "CHOICE",
d322d05 3084
          "members": [
d322d05 3085
            {
d322d05 3086
              "type": "SEQ",
d322d05 3087
              "members": [
d322d05 3088
                {
d322d05 3089
                  "type": "SEQ",
d322d05 3090
                  "members": [
d322d05 3091
                    {
13507fa 3092
                      "type": "CHOICE",
13507fa 3093
                      "members": [
13507fa 3094
                        {
13507fa 3095
                          "type": "SYMBOL",
13507fa 3096
                          "name": "spread_argument"
13507fa 3097
                        },
13507fa 3098
                        {
13507fa 3099
                          "type": "SYMBOL",
13507fa 3100
                          "name": "field_argument"
13507fa 3101
                        }
13507fa 3102
                      ]
d322d05 3103
                    },
d322d05 3104
                    {
13507fa 3105
                      "type": "REPEAT",
d322d05 3106
                      "content": {
d322d05 3107
                        "type": "SEQ",
d322d05 3108
                        "members": [
d322d05 3109
                          {
d322d05 3110
                            "type": "STRING",
13507fa 3111
                            "value": ","
d322d05 3112
                          },
d322d05 3113
                          {
13507fa 3114
                            "type": "CHOICE",
13507fa 3115
                            "members": [
13507fa 3116
                              {
13507fa 3117
                                "type": "SYMBOL",
13507fa 3118
                                "name": "spread_argument"
13507fa 3119
                              },
13507fa 3120
                              {
13507fa 3121
                                "type": "SYMBOL",
13507fa 3122
                                "name": "field_argument"
13507fa 3123
                              }
13507fa 3124
                            ]
d322d05 3125
                          }
d322d05 3126
                        ]
d322d05 3127
                      }
13507fa 3128
                    }
13507fa 3129
                  ]
13507fa 3130
                },
13507fa 3131
                {
13507fa 3132
                  "type": "CHOICE",
13507fa 3133
                  "members": [
13507fa 3134
                    {
13507fa 3135
                      "type": "STRING",
13507fa 3136
                      "value": ","
13507fa 3137
                    },
13507fa 3138
                    {
13507fa 3139
                      "type": "BLANK"
13507fa 3140
                    }
13507fa 3141
                  ]
d322d05 3142
                }
d322d05 3143
              ]
d322d05 3144
            },
d322d05 3145
            {
d322d05 3146
              "type": "BLANK"
d322d05 3147
            }
d322d05 3148
          ]
d322d05 3149
        },
d322d05 3150
        {
13507fa 3151
          "type": "STRING",
13507fa 3152
          "value": ")"
13507fa 3153
        }
13507fa 3154
      ]
13507fa 3155
    },
13507fa 3156
    "field_argument": {
13507fa 3157
      "type": "SEQ",
13507fa 3158
      "members": [
13507fa 3159
        {
13507fa 3160
          "type": "FIELD",
13507fa 3161
          "name": "name",
13507fa 3162
          "content": {
13507fa 3163
            "type": "SYMBOL",
13507fa 3164
            "name": "var_identifier"
13507fa 3165
          }
d322d05 3166
        },
d322d05 3167
        {
d322d05 3168
          "type": "STRING",
13507fa 3169
          "value": ":"
13507fa 3170
        },
13507fa 3171
        {
13507fa 3172
          "type": "FIELD",
13507fa 3173
          "name": "value",
13507fa 3174
          "content": {
13507fa 3175
            "type": "SYMBOL",
13507fa 3176
            "name": "expression"
13507fa 3177
          }
13507fa 3178
        }
13507fa 3179
      ]
13507fa 3180
    },
13507fa 3181
    "spread_argument": {
13507fa 3182
      "type": "SEQ",
13507fa 3183
      "members": [
13507fa 3184
        {
13507fa 3185
          "type": "STRING",
13507fa 3186
          "value": ".."
13507fa 3187
        },
13507fa 3188
        {
13507fa 3189
          "type": "FIELD",
13507fa 3190
          "name": "value",
13507fa 3191
          "content": {
13507fa 3192
            "type": "SYMBOL",
13507fa 3193
            "name": "expression"
13507fa 3194
          }
d322d05 3195
        }
d322d05 3196
      ]
d322d05 3197
    },
f997bee 3198
    "ternary_expression": {
f997bee 3199
      "type": "PREC_RIGHT",
f997bee 3200
      "value": -1,
f997bee 3201
      "content": {
f997bee 3202
        "type": "SEQ",
f997bee 3203
        "members": [
f997bee 3204
          {
f997bee 3205
            "type": "SYMBOL",
f997bee 3206
            "name": "expression"
efe15db 3207
          },
efe15db 3208
          {
f997bee 3209
            "type": "STRING",
f997bee 3210
            "value": "?"
f997bee 3211
          },
f997bee 3212
          {
f997bee 3213
            "type": "SYMBOL",
f997bee 3214
            "name": "expression"
efe15db 3215
          },
efe15db 3216
          {
2634d00 3217
            "type": "STRING",
f997bee 3218
            "value": ":"
f997bee 3219
          },
f997bee 3220
          {
f997bee 3221
            "type": "SYMBOL",
f997bee 3222
            "name": "expression"
ec5336f 3223
          }
ec5336f 3224
        ]
ec5336f 3225
      }
ec5336f 3226
    },
ec5336f 3227
    "elvis_expression": {
ec5336f 3228
      "type": "PREC_RIGHT",
ec5336f 3229
      "value": -1,
ec5336f 3230
      "content": {
ec5336f 3231
        "type": "SEQ",
ec5336f 3232
        "members": [
ec5336f 3233
          {
ec5336f 3234
            "type": "SYMBOL",
ec5336f 3235
            "name": "expression"
ec5336f 3236
          },
ec5336f 3237
          {
ec5336f 3238
            "type": "STRING",
ec5336f 3239
            "value": "?:"
ec5336f 3240
          },
ec5336f 3241
          {
ec5336f 3242
            "type": "SYMBOL",
ec5336f 3243
            "name": "expression"
efe15db 3244
          }
efe15db 3245
        ]
efe15db 3246
      }
efe15db 3247
    },
f997bee 3248
    "string": {
2634d00 3249
      "type": "SEQ",
2634d00 3250
      "members": [
2634d00 3251
        {
2634d00 3252
          "type": "SYMBOL",
f997bee 3253
          "name": "string_start"
2634d00 3254
        },
2634d00 3255
        {
2634d00 3256
          "type": "REPEAT",
2634d00 3257
          "content": {
f997bee 3258
            "type": "CHOICE",
2634d00 3259
            "members": [
2634d00 3260
              {
f997bee 3261
                "type": "SYMBOL",
f997bee 3262
                "name": "interpolation"
2634d00 3263
              },
2634d00 3264
              {
2634d00 3265
                "type": "SYMBOL",
f997bee 3266
                "name": "string_content"
2634d00 3267
              }
2634d00 3268
            ]
2634d00 3269
          }
2634d00 3270
        },
2634d00 3271
        {
2634d00 3272
          "type": "SYMBOL",
f997bee 3273
          "name": "string_end"
2634d00 3274
        }
2634d00 3275
      ]
2634d00 3276
    },
f997bee 3277
    "string_content": {
f997bee 3278
      "type": "PREC_RIGHT",
f997bee 3279
      "value": 0,
efe15db 3280
      "content": {
f997bee 3281
        "type": "REPEAT1",
f997bee 3282
        "content": {
f997bee 3283
          "type": "CHOICE",
efe15db 3284
          "members": [
efe15db 3285
            {
efe15db 3286
              "type": "SYMBOL",
f997bee 3287
              "name": "escape_interpolation"
efe15db 3288
            },
efe15db 3289
            {
f997bee 3290
              "type": "SYMBOL",
f997bee 3291
              "name": "escape_sequence"
f997bee 3292
            },
f997bee 3293
            {
f997bee 3294
              "type": "SYMBOL",
f997bee 3295
              "name": "_not_escape_sequence"
f997bee 3296
            },
f997bee 3297
            {
f997bee 3298
              "type": "SYMBOL",
f997bee 3299
              "name": "_string_content"
efe15db 3300
            }
efe15db 3301
          ]
efe15db 3302
        }
f997bee 3303
      }
efe15db 3304
    },
f997bee 3305
    "interpolation": {
4bd2c1c 3306
      "type": "SEQ",
4bd2c1c 3307
      "members": [
4bd2c1c 3308
        {
4bd2c1c 3309
          "type": "STRING",
f997bee 3310
          "value": "{"
4bd2c1c 3311
        },
4bd2c1c 3312
        {
9e7927c 3313
          "type": "SYMBOL",
2ec05c8 3314
          "name": "expression"
4bd2c1c 3315
        },
4bd2c1c 3316
        {
f997bee 3317
          "type": "STRING",
f997bee 3318
          "value": "}"
4bd2c1c 3319
        }
4bd2c1c 3320
      ]
4bd2c1c 3321
    },
4bd2c1c 3322
    "escape_sequence": {
f997bee 3323
      "type": "IMMEDIATE_TOKEN",
f997bee 3324
      "content": {
f997bee 3325
        "type": "PREC",
f997bee 3326
        "value": 1,
f997bee 3327
        "content": {
f997bee 3328
          "type": "SEQ",
f997bee 3329
          "members": [
f997bee 3330
            {
f997bee 3331
              "type": "STRING",
f997bee 3332
              "value": "\\"
f997bee 3333
            },
f997bee 3334
            {
f997bee 3335
              "type": "CHOICE",
f997bee 3336
              "members": [
f997bee 3337
                {
f997bee 3338
                  "type": "PATTERN",
f997bee 3339
                  "value": "u[a-fA-F\\d]{4}"
f997bee 3340
                },
f997bee 3341
                {
f997bee 3342
                  "type": "PATTERN",
f997bee 3343
                  "value": "U[a-fA-F\\d]{8}"
f997bee 3344
                },
f997bee 3345
                {
f997bee 3346
                  "type": "PATTERN",
f997bee 3347
                  "value": "x[a-fA-F\\d]{2}"
f997bee 3348
                },
f997bee 3349
                {
f997bee 3350
                  "type": "PATTERN",
f997bee 3351
                  "value": "\\d{1,3}"
f997bee 3352
                },
f997bee 3353
                {
f997bee 3354
                  "type": "PATTERN",
f997bee 3355
                  "value": "\\r?\\n"
f997bee 3356
                },
f997bee 3357
                {
f997bee 3358
                  "type": "PATTERN",
f997bee 3359
                  "value": "['\"abfrntv\\\\]"
f997bee 3360
                },
f997bee 3361
                {
f997bee 3362
                  "type": "PATTERN",
f997bee 3363
                  "value": "N\\{[^}]+\\}"
f997bee 3364
                }
f997bee 3365
              ]
f997bee 3366
            }
f997bee 3367
          ]
4bd2c1c 3368
        }
f997bee 3369
      }
f997bee 3370
    },
f997bee 3371
    "_not_escape_sequence": {
f997bee 3372
      "type": "IMMEDIATE_TOKEN",
f997bee 3373
      "content": {
f997bee 3374
        "type": "STRING",
f997bee 3375
        "value": "\\"
f997bee 3376
      }
4bd2c1c 3377
    },
4bd2c1c 3378
    "float": {
2634d00 3379
      "type": "TOKEN",
2634d00 3380
      "content": {
2634d00 3381
        "type": "CHOICE",
2634d00 3382
        "members": [
2634d00 3383
          {
2634d00 3384
            "type": "SEQ",
2634d00 3385
            "members": [
2634d00 3386
              {
2634d00 3387
                "type": "CHOICE",
2634d00 3388
                "members": [
2634d00 3389
                  {
2634d00 3390
                    "type": "SEQ",
2634d00 3391
                    "members": [
2634d00 3392
                      {
2634d00 3393
                        "type": "TOKEN",
2634d00 3394
                        "content": {
2634d00 3395
                          "type": "SEQ",
2634d00 3396
                          "members": [
2634d00 3397
                            {
2634d00 3398
                              "type": "PATTERN",
2634d00 3399
                              "value": "[0-9]+"
2634d00 3400
                            },
2634d00 3401
                            {
2634d00 3402
                              "type": "REPEAT",
2634d00 3403
                              "content": {
2634d00 3404
                                "type": "SEQ",
2634d00 3405
                                "members": [
2634d00 3406
                                  {
2634d00 3407
                                    "type": "PATTERN",
2634d00 3408
                                    "value": "_+"
2634d00 3409
                                  },
2634d00 3410
                                  {
2634d00 3411
                                    "type": "PATTERN",
2634d00 3412
                                    "value": "[0-9]+"
2634d00 3413
                                  }
2634d00 3414
                                ]
2634d00 3415
                              }
2634d00 3416
                            }
2634d00 3417
                          ]
2634d00 3418
                        }
2634d00 3419
                      },
2634d00 3420
                      {
2634d00 3421
                        "type": "TOKEN",
2634d00 3422
                        "content": {
2634d00 3423
                          "type": "SEQ",
2634d00 3424
                          "members": [
2634d00 3425
                            {
2634d00 3426
                              "type": "PATTERN",
2634d00 3427
                              "value": "[eE]"
2634d00 3428
                            },
2634d00 3429
                            {
2634d00 3430
                              "type": "CHOICE",
2634d00 3431
                              "members": [
2634d00 3432
                                {
2634d00 3433
                                  "type": "PATTERN",
2634d00 3434
                                  "value": "[+-]"
2634d00 3435
                                },
2634d00 3436
                                {
2634d00 3437
                                  "type": "BLANK"
2634d00 3438
                                }
2634d00 3439
                              ]
2634d00 3440
                            },
2634d00 3441
                            {
2634d00 3442
                              "type": "TOKEN",
2634d00 3443
                              "content": {
2634d00 3444
                                "type": "SEQ",
2634d00 3445
                                "members": [
2634d00 3446
                                  {
2634d00 3447
                                    "type": "PATTERN",
2634d00 3448
                                    "value": "[0-9]+"
2634d00 3449
                                  },
2634d00 3450
                                  {
2634d00 3451
                                    "type": "REPEAT",
2634d00 3452
                                    "content": {
2634d00 3453
                                      "type": "SEQ",
2634d00 3454
                                      "members": [
2634d00 3455
                                        {
2634d00 3456
                                          "type": "PATTERN",
2634d00 3457
                                          "value": "_+"
2634d00 3458
                                        },
2634d00 3459
                                        {
2634d00 3460
                                          "type": "PATTERN",
2634d00 3461
                                          "value": "[0-9]+"
2634d00 3462
                                        }
2634d00 3463
                                      ]
2634d00 3464
                                    }
2634d00 3465
                                  }
2634d00 3466
                                ]
2634d00 3467
                              }
2634d00 3468
                            }
2634d00 3469
                          ]
2634d00 3470
                        }
2634d00 3471
                      }
2634d00 3472
                    ]
2634d00 3473
                  },
2634d00 3474
                  {
2634d00 3475
                    "type": "SEQ",
2634d00 3476
                    "members": [
2634d00 3477
                      {
2634d00 3478
                        "type": "CHOICE",
2634d00 3479
                        "members": [
2634d00 3480
                          {
2634d00 3481
                            "type": "TOKEN",
2634d00 3482
                            "content": {
2634d00 3483
                              "type": "SEQ",
2634d00 3484
                              "members": [
2634d00 3485
                                {
2634d00 3486
                                  "type": "PATTERN",
2634d00 3487
                                  "value": "[0-9]+"
2634d00 3488
                                },
2634d00 3489
                                {
2634d00 3490
                                  "type": "REPEAT",
2634d00 3491
                                  "content": {
2634d00 3492
                                    "type": "SEQ",
2634d00 3493
                                    "members": [
2634d00 3494
                                      {
2634d00 3495
                                        "type": "PATTERN",
2634d00 3496
                                        "value": "_+"
2634d00 3497
                                      },
2634d00 3498
                                      {
2634d00 3499
                                        "type": "PATTERN",
2634d00 3500
                                        "value": "[0-9]+"
2634d00 3501
                                      }
2634d00 3502
                                    ]
2634d00 3503
                                  }
2634d00 3504
                                }
2634d00 3505
                              ]
2634d00 3506
                            }
2634d00 3507
                          },
2634d00 3508
                          {
2634d00 3509
                            "type": "BLANK"
2634d00 3510
                          }
2634d00 3511
                        ]
2634d00 3512
                      },
2634d00 3513
                      {
2634d00 3514
                        "type": "STRING",
2634d00 3515
                        "value": "."
2634d00 3516
                      },
2634d00 3517
                      {
2634d00 3518
                        "type": "TOKEN",
2634d00 3519
                        "content": {
2634d00 3520
                          "type": "SEQ",
2634d00 3521
                          "members": [
2634d00 3522
                            {
2634d00 3523
                              "type": "PATTERN",
2634d00 3524
                              "value": "[0-9]+"
2634d00 3525
                            },
2634d00 3526
                            {
2634d00 3527
                              "type": "REPEAT",
2634d00 3528
                              "content": {
2634d00 3529
                                "type": "SEQ",
2634d00 3530
                                "members": [
2634d00 3531
                                  {
2634d00 3532
                                    "type": "PATTERN",
2634d00 3533
                                    "value": "_+"
2634d00 3534
                                  },
2634d00 3535
                                  {
2634d00 3536
                                    "type": "PATTERN",
2634d00 3537
                                    "value": "[0-9]+"
2634d00 3538
                                  }
2634d00 3539
                                ]
2634d00 3540
                              }
2634d00 3541
                            }
2634d00 3542
                          ]
2634d00 3543
                        }
2634d00 3544
                      },
2634d00 3545
                      {
2634d00 3546
                        "type": "CHOICE",
2634d00 3547
                        "members": [
2634d00 3548
                          {
2634d00 3549
                            "type": "TOKEN",
2634d00 3550
                            "content": {
2634d00 3551
                              "type": "SEQ",
2634d00 3552
                              "members": [
2634d00 3553
                                {
2634d00 3554
                                  "type": "PATTERN",
2634d00 3555
                                  "value": "[eE]"
2634d00 3556
                                },
2634d00 3557
                                {
2634d00 3558
                                  "type": "CHOICE",
2634d00 3559
                                  "members": [
2634d00 3560
                                    {
2634d00 3561
                                      "type": "PATTERN",
2634d00 3562
                                      "value": "[+-]"
2634d00 3563
                                    },
2634d00 3564
                                    {
2634d00 3565
                                      "type": "BLANK"
2634d00 3566
                                    }
2634d00 3567
                                  ]
2634d00 3568
                                },
2634d00 3569
                                {
2634d00 3570
                                  "type": "TOKEN",
2634d00 3571
                                  "content": {
2634d00 3572
                                    "type": "SEQ",
2634d00 3573
                                    "members": [
2634d00 3574
                                      {
2634d00 3575
                                        "type": "PATTERN",
2634d00 3576
                                        "value": "[0-9]+"
2634d00 3577
                                      },
2634d00 3578
                                      {
2634d00 3579
                                        "type": "REPEAT",
2634d00 3580
                                        "content": {
2634d00 3581
                                          "type": "SEQ",
2634d00 3582
                                          "members": [
2634d00 3583
                                            {
2634d00 3584
                                              "type": "PATTERN",
2634d00 3585
                                              "value": "_+"
2634d00 3586
                                            },
2634d00 3587
                                            {
2634d00 3588
                                              "type": "PATTERN",
2634d00 3589
                                              "value": "[0-9]+"
2634d00 3590
                                            }
2634d00 3591
                                          ]
2634d00 3592
                                        }
2634d00 3593
                                      }
2634d00 3594
                                    ]
2634d00 3595
                                  }
2634d00 3596
                                }
2634d00 3597
                              ]
2634d00 3598
                            }
2634d00 3599
                          },
2634d00 3600
                          {
2634d00 3601
                            "type": "BLANK"
2634d00 3602
                          }
2634d00 3603
                        ]
2634d00 3604
                      }
2634d00 3605
                    ]
2634d00 3606
                  }
2634d00 3607
                ]
2634d00 3608
              },
2634d00 3609
              {
2634d00 3610
                "type": "CHOICE",
2634d00 3611
                "members": [
2634d00 3612
                  {
2634d00 3613
                    "type": "PATTERN",
2634d00 3614
                    "value": "[fF]"
2634d00 3615
                  },
2634d00 3616
                  {
2634d00 3617
                    "type": "BLANK"
2634d00 3618
                  }
2634d00 3619
                ]
2634d00 3620
              }
2634d00 3621
            ]
2634d00 3622
          },
2634d00 3623
          {
2634d00 3624
            "type": "SEQ",
2634d00 3625
            "members": [
2634d00 3626
              {
2634d00 3627
                "type": "TOKEN",
2634d00 3628
                "content": {
2634d00 3629
                  "type": "SEQ",
2634d00 3630
                  "members": [
2634d00 3631
                    {
2634d00 3632
                      "type": "PATTERN",
2634d00 3633
                      "value": "[0-9]+"
2634d00 3634
                    },
2634d00 3635
                    {
2634d00 3636
                      "type": "REPEAT",
2634d00 3637
                      "content": {
2634d00 3638
                        "type": "SEQ",
2634d00 3639
                        "members": [
2634d00 3640
                          {
2634d00 3641
                            "type": "PATTERN",
2634d00 3642
                            "value": "_+"
2634d00 3643
                          },
2634d00 3644
                          {
2634d00 3645
                            "type": "PATTERN",
2634d00 3646
                            "value": "[0-9]+"
2634d00 3647
                          }
2634d00 3648
                        ]
2634d00 3649
                      }
2634d00 3650
                    }
2634d00 3651
                  ]
2634d00 3652
                }
2634d00 3653
              },
2634d00 3654
              {
2634d00 3655
                "type": "PATTERN",
2634d00 3656
                "value": "[fF]"
2634d00 3657
              }
2634d00 3658
            ]
2634d00 3659
          }
2634d00 3660
        ]
2634d00 3661
      }
4bd2c1c 3662
    },
4bd2c1c 3663
    "integer": {
4bd2c1c 3664
      "type": "CHOICE",
4bd2c1c 3665
      "members": [
4bd2c1c 3666
        {
2634d00 3667
          "type": "TOKEN",
2634d00 3668
          "content": {
2634d00 3669
            "type": "SEQ",
2634d00 3670
            "members": [
2634d00 3671
              {
2634d00 3672
                "type": "CHOICE",
2634d00 3673
                "members": [
2634d00 3674
                  {
2634d00 3675
                    "type": "PATTERN",
2634d00 3676
                    "value": "[1-9]"
2634d00 3677
                  },
2634d00 3678
                  {
2634d00 3679
                    "type": "BLANK"
2634d00 3680
                  }
2634d00 3681
                ]
2634d00 3682
              },
2634d00 3683
              {
2634d00 3684
                "type": "TOKEN",
2634d00 3685
                "content": {
2634d00 3686
                  "type": "SEQ",
2634d00 3687
                  "members": [
2634d00 3688
                    {
2634d00 3689
                      "type": "PATTERN",
2634d00 3690
                      "value": "[0-9]+"
2634d00 3691
                    },
2634d00 3692
                    {
2634d00 3693
                      "type": "REPEAT",
2634d00 3694
                      "content": {
2634d00 3695
                        "type": "SEQ",
2634d00 3696
                        "members": [
2634d00 3697
                          {
2634d00 3698
                            "type": "PATTERN",
2634d00 3699
                            "value": "_+"
2634d00 3700
                          },
2634d00 3701
                          {
2634d00 3702
                            "type": "PATTERN",
2634d00 3703
                            "value": "[0-9]+"
2634d00 3704
                          }
2634d00 3705
                        ]
2634d00 3706
                      }
2634d00 3707
                    }
2634d00 3708
                  ]
2634d00 3709
                }
2634d00 3710
              }
2634d00 3711
            ]
2634d00 3712
          }
4bd2c1c 3713
        },
4bd2c1c 3714
        {
2634d00 3715
          "type": "TOKEN",
2634d00 3716
          "content": {
2634d00 3717
            "type": "SEQ",
2634d00 3718
            "members": [
2634d00 3719
              {
2634d00 3720
                "type": "STRING",
2634d00 3721
                "value": "0"
2634d00 3722
              },
2634d00 3723
              {
2634d00 3724
                "type": "PATTERN",
2634d00 3725
                "value": "[xX]"
2634d00 3726
              },
2634d00 3727
              {
2634d00 3728
                "type": "TOKEN",
2634d00 3729
                "content": {
2634d00 3730
                  "type": "SEQ",
2634d00 3731
                  "members": [
2634d00 3732
                    {
2634d00 3733
                      "type": "PATTERN",
2634d00 3734
                      "value": "[0-9a-fA-F]+"
2634d00 3735
                    },
2634d00 3736
                    {
2634d00 3737
                      "type": "REPEAT",
2634d00 3738
                      "content": {
2634d00 3739
                        "type": "SEQ",
2634d00 3740
                        "members": [
2634d00 3741
                          {
2634d00 3742
                            "type": "PATTERN",
2634d00 3743
                            "value": "_+"
2634d00 3744
                          },
2634d00 3745
                          {
2634d00 3746
                            "type": "PATTERN",
2634d00 3747
                            "value": "[0-9a-fA-F]+"
2634d00 3748
                          }
2634d00 3749
                        ]
2634d00 3750
                      }
2634d00 3751
                    }
2634d00 3752
                  ]
2634d00 3753
                }
2634d00 3754
              }
2634d00 3755
            ]
2634d00 3756
          }
4bd2c1c 3757
        },
4bd2c1c 3758
        {
2634d00 3759
          "type": "TOKEN",
2634d00 3760
          "content": {
2634d00 3761
            "type": "SEQ",
2634d00 3762
            "members": [
2634d00 3763
              {
2634d00 3764
                "type": "STRING",
2634d00 3765
                "value": "0"
2634d00 3766
              },
2634d00 3767
              {
2634d00 3768
                "type": "PATTERN",
2634d00 3769
                "value": "[bB]"
2634d00 3770
              },
2634d00 3771
              {
2634d00 3772
                "type": "TOKEN",
2634d00 3773
                "content": {
2634d00 3774
                  "type": "SEQ",
2634d00 3775
                  "members": [
2634d00 3776
                    {
2634d00 3777
                      "type": "PATTERN",
2634d00 3778
                      "value": "[01]"
2634d00 3779
                    },
2634d00 3780
                    {
2634d00 3781
                      "type": "REPEAT",
2634d00 3782
                      "content": {
2634d00 3783
                        "type": "SEQ",
2634d00 3784
                        "members": [
2634d00 3785
                          {
2634d00 3786
                            "type": "PATTERN",
2634d00 3787
                            "value": "_+"
2634d00 3788
                          },
2634d00 3789
                          {
2634d00 3790
                            "type": "PATTERN",
2634d00 3791
                            "value": "[01]"
2634d00 3792
                          }
2634d00 3793
                        ]
2634d00 3794
                      }
2634d00 3795
                    }
2634d00 3796
                  ]
2634d00 3797
                }
2634d00 3798
              }
2634d00 3799
            ]
2634d00 3800
          }
4bd2c1c 3801
        }
4bd2c1c 3802
      ]
4bd2c1c 3803
    },
c05610c 3804
    "self": {
efe15db 3805
      "type": "PATTERN",
c05610c 3806
      "value": "self"
efe15db 3807
    },
4aca0b2 3808
    "comment": {
4aca0b2 3809
      "type": "TOKEN",
4aca0b2 3810
      "content": {
4aca0b2 3811
        "type": "SEQ",
4aca0b2 3812
        "members": [
4aca0b2 3813
          {
4aca0b2 3814
            "type": "STRING",
4aca0b2 3815
            "value": "#"
4aca0b2 3816
          },
4aca0b2 3817
          {
4aca0b2 3818
            "type": "PATTERN",
4aca0b2 3819
            "value": ".*"
4aca0b2 3820
          }
4aca0b2 3821
        ]
4aca0b2 3822
      }
4aca0b2 3823
    },
4bd2c1c 3824
    "identifier": {
4bd2c1c 3825
      "type": "PATTERN",
5d12d71 3826
      "value": "[_a-z][_a-zA-Z0-9]*"
4bd2c1c 3827
    },
f997bee 3828
    "generic": {
8f91d27 3829
      "type": "PATTERN",
8f91d27 3830
      "value": "[A-Z]"
f997bee 3831
    },
58cc293 3832
    "mod_identifier": {
58cc293 3833
      "type": "PATTERN",
f502d22 3834
      "value": "[a-z][a-z0-9]*(_[a-z0-9]+)*"
58cc293 3835
    },
58cc293 3836
    "const_identifier": {
58cc293 3837
      "type": "PATTERN",
f502d22 3838
      "value": "[A-Z][A-Z0-9]*(_[A-Z0-9]+)*"
58cc293 3839
    },
9e7927c 3840
    "var_identifier": {
f997bee 3841
      "type": "PATTERN",
f502d22 3842
      "value": "[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*"
f997bee 3843
    },
f997bee 3844
    "fn_identifier": {
f997bee 3845
      "type": "PATTERN",
f997bee 3846
      "value": "[a-z][a-zA-Z0-9]*"
f997bee 3847
    },
f997bee 3848
    "type_identifier": {
f997bee 3849
      "type": "PATTERN",
8f91d27 3850
      "value": "[A-Z][a-zA-Z0-9]+"
4bd2c1c 3851
    }
4bd2c1c 3852
  },
4bd2c1c 3853
  "extras": [
efe15db 3854
    {
efe15db 3855
      "type": "SYMBOL",
efe15db 3856
      "name": "comment"
efe15db 3857
    },
4bd2c1c 3858
    {
4bd2c1c 3859
      "type": "PATTERN",
f997bee 3860
      "value": "[\\s\\f\\uFEFF\\u2060\\u200B]|\\r?\\n"
4bd2c1c 3861
    }
4bd2c1c 3862
  ],
96ec67f 3863
  "conflicts": [
96ec67f 3864
    [
96ec67f 3865
      "fn_argument_list",
96ec67f 3866
      "class_argument_list"
af1776b 3867
    ],
af1776b 3868
    [
af1776b 3869
      "expression",
af1776b 3870
      "try_expression"
96ec67f 3871
    ]
96ec67f 3872
  ],
4bd2c1c 3873
  "precedences": [],
4bd2c1c 3874
  "externals": [
4bd2c1c 3875
    {
4bd2c1c 3876
      "type": "SYMBOL",
f997bee 3877
      "name": "_newline"
f997bee 3878
    },
f997bee 3879
    {
f997bee 3880
      "type": "SYMBOL",
f997bee 3881
      "name": "_indent"
f997bee 3882
    },
f997bee 3883
    {
f997bee 3884
      "type": "SYMBOL",
f997bee 3885
      "name": "_dedent"
f997bee 3886
    },
f997bee 3887
    {
f997bee 3888
      "type": "SYMBOL",
f997bee 3889
      "name": "string_start"
f997bee 3890
    },
f997bee 3891
    {
f997bee 3892
      "type": "SYMBOL",
f997bee 3893
      "name": "_string_content"
f997bee 3894
    },
f997bee 3895
    {
f997bee 3896
      "type": "SYMBOL",
f997bee 3897
      "name": "escape_interpolation"
f997bee 3898
    },
f997bee 3899
    {
f997bee 3900
      "type": "SYMBOL",
f997bee 3901
      "name": "string_end"
f997bee 3902
    },
f997bee 3903
    {
f997bee 3904
      "type": "SYMBOL",
f997bee 3905
      "name": "comment"
f997bee 3906
    },
f997bee 3907
    {
f997bee 3908
      "type": "STRING",
f997bee 3909
      "value": "]"
f997bee 3910
    },
f997bee 3911
    {
f997bee 3912
      "type": "STRING",
f997bee 3913
      "value": ")"
f997bee 3914
    },
f997bee 3915
    {
f997bee 3916
      "type": "STRING",
f997bee 3917
      "value": "}"
c06ddba 3918
    },
c06ddba 3919
    {
c06ddba 3920
      "type": "SYMBOL",
c06ddba 3921
      "name": "_arm_break"
4bd2c1c 3922
    }
4bd2c1c 3923
  ],
f997bee 3924
  "inline": [
8f91d27 3925
    "generic_type"
f997bee 3926
  ],
f502d22 3927
  "supertypes": [],
f502d22 3928
  "reserved": {}
f502d22 3929
}