parser-lr 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/bin/parser-lr.js +404 -874
  2. package/bin/parser-lr.js.map +1 -1
  3. package/dist/lib/diagnostics/format-diagnostic.d.ts +31 -0
  4. package/dist/lib/diagnostics/format-diagnostic.d.ts.map +1 -0
  5. package/dist/lib/diagnostics/format-diagnostic.js +36 -0
  6. package/dist/lib/diagnostics/format-diagnostic.js.map +1 -0
  7. package/dist/lib/diagnostics/index.d.ts +5 -0
  8. package/dist/lib/diagnostics/index.d.ts.map +1 -0
  9. package/dist/lib/diagnostics/index.js +3 -0
  10. package/dist/lib/diagnostics/index.js.map +1 -0
  11. package/dist/lib/diagnostics/source-position.d.ts +24 -0
  12. package/dist/lib/diagnostics/source-position.d.ts.map +1 -0
  13. package/dist/lib/diagnostics/source-position.js +39 -0
  14. package/dist/lib/diagnostics/source-position.js.map +1 -0
  15. package/dist/lib/grammar/ast-type.d.ts +2 -0
  16. package/dist/lib/grammar/ast-type.d.ts.map +1 -1
  17. package/dist/lib/grammar/grammar-from-cst.js +8 -4
  18. package/dist/lib/grammar/grammar-from-cst.js.map +1 -1
  19. package/dist/lib/grammar/grammar.json +86 -820
  20. package/dist/lib/grammar/index.d.ts +1 -1
  21. package/dist/lib/grammar/index.d.ts.map +1 -1
  22. package/dist/lib/grammar/production.d.ts +2 -0
  23. package/dist/lib/grammar/production.d.ts.map +1 -1
  24. package/dist/lib/grammar/table-validator.d.ts +12 -2
  25. package/dist/lib/grammar/table-validator.d.ts.map +1 -1
  26. package/dist/lib/grammar/table-validator.js +68 -25
  27. package/dist/lib/grammar/table-validator.js.map +1 -1
  28. package/dist/lib/grammar/transform-rule.d.ts +3 -0
  29. package/dist/lib/grammar/transform-rule.d.ts.map +1 -1
  30. package/dist/lib/grammar-entry.d.ts +1 -1
  31. package/dist/lib/grammar-entry.d.ts.map +1 -1
  32. package/dist/lib/grammar-entry.js.map +1 -1
  33. package/dist/lib/index.d.ts +3 -0
  34. package/dist/lib/index.d.ts.map +1 -1
  35. package/dist/lib/index.js +1 -0
  36. package/dist/lib/index.js.map +1 -1
  37. package/dist/lib/parse-context.d.ts +7 -0
  38. package/dist/lib/parse-context.d.ts.map +1 -1
  39. package/dist/lib/parse-context.js +9 -0
  40. package/dist/lib/parse-context.js.map +1 -1
  41. package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -1
  42. package/dist/lib/parse-table/table/lr-parse-table.js +10 -3
  43. package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -1
  44. package/dist/lib/parser-lr.d.ts +15 -0
  45. package/dist/lib/parser-lr.d.ts.map +1 -1
  46. package/dist/lib/parser-lr.js +38 -9
  47. package/dist/lib/parser-lr.js.map +1 -1
  48. package/docs/The Ferrite Programming Language.md +568 -0
  49. package/docs/grammar.md +55 -3
  50. package/grammars/6502.grammar +2 -2
  51. package/grammars/ferrite.grammar +107 -97
  52. package/grammars/grammar.grammar +19 -140
  53. package/grammars/lisp.grammar +3 -2
  54. package/package.json +1 -1
@@ -4692,134 +4692,35 @@
4692
4692
  "ast": [
4693
4693
  {
4694
4694
  "name": "grammar_file",
4695
- "expression": {
4696
- "kind": "sequence",
4697
- "elements": [
4698
- {
4699
- "kind": "reference",
4700
- "name": "name_decl"
4701
- },
4702
- {
4703
- "kind": "repeat",
4704
- "element": {
4705
- "kind": "reference",
4706
- "name": "section"
4707
- }
4708
- },
4709
- {
4710
- "kind": "reference",
4711
- "name": "start_decl"
4712
- },
4713
- {
4714
- "kind": "reference",
4715
- "name": "grammar_section"
4716
- },
4717
- {
4718
- "kind": "optional",
4719
- "element": {
4720
- "kind": "reference",
4721
- "name": "ast_section"
4722
- }
4723
- },
4724
- {
4725
- "kind": "optional",
4726
- "element": {
4727
- "kind": "reference",
4728
- "name": "transform_section"
4729
- }
4730
- }
4731
- ]
4732
- }
4733
- },
4734
- {
4735
- "name": "name_decl",
4736
- "expression": {
4737
- "kind": "sequence",
4738
- "elements": [
4739
- {
4740
- "kind": "reference",
4741
- "name": "name_kw"
4742
- },
4743
- {
4744
- "kind": "reference",
4745
- "name": "grammar_name"
4746
- },
4747
- {
4748
- "kind": "reference",
4749
- "name": "semicolon"
4750
- }
4751
- ]
4752
- }
4753
- },
4754
- {
4755
- "name": "grammar_name",
4756
4695
  "expression": {
4757
4696
  "kind": "choice",
4758
4697
  "alternatives": [
4759
4698
  {
4760
- "label": null,
4699
+ "label": "sections",
4761
4700
  "expression": {
4762
- "kind": "reference",
4763
- "name": "identifier"
4764
- }
4765
- },
4766
- {
4767
- "label": null,
4768
- "expression": {
4769
- "kind": "reference",
4770
- "name": "string_literal"
4701
+ "kind": "repeat",
4702
+ "element": {
4703
+ "kind": "reference",
4704
+ "name": "section"
4705
+ }
4771
4706
  }
4772
4707
  }
4773
4708
  ]
4774
4709
  }
4775
4710
  },
4776
4711
  {
4777
- "name": "section",
4712
+ "name": "token_section",
4778
4713
  "expression": {
4779
4714
  "kind": "choice",
4780
4715
  "alternatives": [
4781
4716
  {
4782
- "label": null,
4717
+ "label": "definitions",
4783
4718
  "expression": {
4784
- "kind": "reference",
4785
- "name": "token_section"
4786
- }
4787
- },
4788
- {
4789
- "label": null,
4790
- "expression": {
4791
- "kind": "reference",
4792
- "name": "skip_section"
4793
- }
4794
- },
4795
- {
4796
- "label": null,
4797
- "expression": {
4798
- "kind": "reference",
4799
- "name": "states_section"
4800
- }
4801
- }
4802
- ]
4803
- }
4804
- },
4805
- {
4806
- "name": "token_section",
4807
- "expression": {
4808
- "kind": "sequence",
4809
- "elements": [
4810
- {
4811
- "kind": "reference",
4812
- "name": "tokens_kw"
4813
- },
4814
- {
4815
- "kind": "reference",
4816
- "name": "token_def"
4817
- },
4818
- {
4819
- "kind": "repeat",
4820
- "element": {
4821
- "kind": "reference",
4822
- "name": "token_def"
4719
+ "kind": "repeat",
4720
+ "element": {
4721
+ "kind": "reference",
4722
+ "name": "token_def"
4723
+ }
4823
4724
  }
4824
4725
  }
4825
4726
  ]
@@ -4828,109 +4729,17 @@
4828
4729
  {
4829
4730
  "name": "skip_section",
4830
4731
  "expression": {
4831
- "kind": "sequence",
4832
- "elements": [
4833
- {
4834
- "kind": "reference",
4835
- "name": "skip_kw"
4836
- },
4837
- {
4838
- "kind": "reference",
4839
- "name": "token_def"
4840
- },
4841
- {
4842
- "kind": "repeat",
4843
- "element": {
4844
- "kind": "reference",
4845
- "name": "token_def"
4846
- }
4847
- }
4848
- ]
4849
- }
4850
- },
4851
- {
4852
- "name": "states_section",
4853
- "expression": {
4854
- "kind": "sequence",
4855
- "elements": [
4856
- {
4857
- "kind": "reference",
4858
- "name": "states_kw"
4859
- },
4860
- {
4861
- "kind": "reference",
4862
- "name": "state_name"
4863
- },
4732
+ "kind": "choice",
4733
+ "alternatives": [
4864
4734
  {
4865
- "kind": "repeat",
4866
- "element": {
4867
- "kind": "sequence",
4868
- "elements": [
4869
- {
4870
- "kind": "reference",
4871
- "name": "comma"
4872
- },
4873
- {
4874
- "kind": "reference",
4875
- "name": "state_name"
4876
- }
4877
- ]
4735
+ "label": "definitions",
4736
+ "expression": {
4737
+ "kind": "repeat",
4738
+ "element": {
4739
+ "kind": "reference",
4740
+ "name": "token_def"
4741
+ }
4878
4742
  }
4879
- },
4880
- {
4881
- "kind": "reference",
4882
- "name": "semicolon"
4883
- }
4884
- ]
4885
- }
4886
- },
4887
- {
4888
- "name": "token_def",
4889
- "expression": {
4890
- "kind": "sequence",
4891
- "elements": [
4892
- {
4893
- "kind": "reference",
4894
- "name": "identifier"
4895
- },
4896
- {
4897
- "kind": "reference",
4898
- "name": "equal"
4899
- },
4900
- {
4901
- "kind": "reference",
4902
- "name": "regex_literal"
4903
- },
4904
- {
4905
- "kind": "reference",
4906
- "name": "semicolon"
4907
- }
4908
- ]
4909
- }
4910
- },
4911
- {
4912
- "name": "state_name",
4913
- "expression": {
4914
- "kind": "reference",
4915
- "name": "identifier"
4916
- }
4917
- },
4918
- {
4919
- "name": "start_decl",
4920
- "expression": {
4921
- "kind": "sequence",
4922
- "elements": [
4923
- {
4924
- "kind": "reference",
4925
- "name": "start_kw"
4926
- },
4927
- {
4928
- "kind": "reference",
4929
- "name": "identifier"
4930
- },
4931
- {
4932
- "kind": "reference",
4933
- "name": "semicolon"
4934
4743
  }
4935
4744
  ]
4936
4745
  }
@@ -4938,21 +4747,16 @@
4938
4747
  {
4939
4748
  "name": "grammar_section",
4940
4749
  "expression": {
4941
- "kind": "sequence",
4942
- "elements": [
4943
- {
4944
- "kind": "reference",
4945
- "name": "grammar_kw"
4946
- },
4947
- {
4948
- "kind": "reference",
4949
- "name": "production"
4950
- },
4750
+ "kind": "choice",
4751
+ "alternatives": [
4951
4752
  {
4952
- "kind": "repeat",
4953
- "element": {
4954
- "kind": "reference",
4955
- "name": "production"
4753
+ "label": "productions",
4754
+ "expression": {
4755
+ "kind": "repeat",
4756
+ "element": {
4757
+ "kind": "reference",
4758
+ "name": "production"
4759
+ }
4956
4760
  }
4957
4761
  }
4958
4762
  ]
@@ -4961,21 +4765,16 @@
4961
4765
  {
4962
4766
  "name": "ast_section",
4963
4767
  "expression": {
4964
- "kind": "sequence",
4965
- "elements": [
4966
- {
4967
- "kind": "reference",
4968
- "name": "ast_kw"
4969
- },
4970
- {
4971
- "kind": "reference",
4972
- "name": "ast_type"
4973
- },
4768
+ "kind": "choice",
4769
+ "alternatives": [
4974
4770
  {
4975
- "kind": "repeat",
4976
- "element": {
4977
- "kind": "reference",
4978
- "name": "ast_type"
4771
+ "label": "types",
4772
+ "expression": {
4773
+ "kind": "repeat",
4774
+ "element": {
4775
+ "kind": "reference",
4776
+ "name": "ast_type"
4777
+ }
4979
4778
  }
4980
4779
  }
4981
4780
  ]
@@ -4984,621 +4783,88 @@
4984
4783
  {
4985
4784
  "name": "transform_section",
4986
4785
  "expression": {
4987
- "kind": "sequence",
4988
- "elements": [
4989
- {
4990
- "kind": "reference",
4991
- "name": "transform_kw"
4992
- },
4993
- {
4994
- "kind": "reference",
4995
- "name": "transform_rule"
4996
- },
4786
+ "kind": "choice",
4787
+ "alternatives": [
4997
4788
  {
4998
- "kind": "repeat",
4999
- "element": {
5000
- "kind": "reference",
5001
- "name": "transform_rule"
4789
+ "label": "rules",
4790
+ "expression": {
4791
+ "kind": "repeat",
4792
+ "element": {
4793
+ "kind": "reference",
4794
+ "name": "transform_rule"
4795
+ }
5002
4796
  }
5003
4797
  }
5004
4798
  ]
5005
4799
  }
5006
4800
  },
5007
- {
5008
- "name": "production",
5009
- "expression": {
5010
- "kind": "sequence",
5011
- "elements": [
5012
- {
5013
- "kind": "reference",
5014
- "name": "identifier"
5015
- },
5016
- {
5017
- "kind": "reference",
5018
- "name": "equal"
5019
- },
5020
- {
5021
- "kind": "reference",
5022
- "name": "expression"
5023
- },
5024
- {
5025
- "kind": "reference",
5026
- "name": "semicolon"
5027
- }
5028
- ]
5029
- }
5030
- },
5031
- {
5032
- "name": "ast_type",
5033
- "expression": {
5034
- "kind": "sequence",
5035
- "elements": [
5036
- {
5037
- "kind": "reference",
5038
- "name": "identifier"
5039
- },
5040
- {
5041
- "kind": "reference",
5042
- "name": "equal"
5043
- },
5044
- {
5045
- "kind": "reference",
5046
- "name": "expression"
5047
- },
5048
- {
5049
- "kind": "reference",
5050
- "name": "semicolon"
5051
- }
5052
- ]
5053
- }
5054
- },
5055
4801
  {
5056
4802
  "name": "transform_rule",
5057
- "expression": {
5058
- "kind": "sequence",
5059
- "elements": [
5060
- {
5061
- "kind": "reference",
5062
- "name": "identifier"
5063
- },
5064
- {
5065
- "kind": "reference",
5066
- "name": "arrow"
5067
- },
5068
- {
5069
- "kind": "reference",
5070
- "name": "labeled_transform"
5071
- },
5072
- {
5073
- "kind": "repeat",
5074
- "element": {
5075
- "kind": "sequence",
5076
- "elements": [
5077
- {
5078
- "kind": "reference",
5079
- "name": "bar"
5080
- },
5081
- {
5082
- "kind": "reference",
5083
- "name": "labeled_transform"
5084
- }
5085
- ]
5086
- }
5087
- },
5088
- {
5089
- "kind": "reference",
5090
- "name": "semicolon"
5091
- }
5092
- ]
5093
- }
5094
- },
5095
- {
5096
- "name": "labeled_transform",
5097
- "expression": {
5098
- "kind": "sequence",
5099
- "elements": [
5100
- {
5101
- "kind": "reference",
5102
- "name": "hash"
5103
- },
5104
- {
5105
- "kind": "reference",
5106
- "name": "identifier"
5107
- },
5108
- {
5109
- "kind": "reference",
5110
- "name": "transform_expr"
5111
- }
5112
- ]
5113
- }
5114
- },
5115
- {
5116
- "name": "transform_expr",
5117
4803
  "expression": {
5118
4804
  "kind": "choice",
5119
4805
  "alternatives": [
5120
4806
  {
5121
- "label": null,
5122
- "expression": {
5123
- "kind": "reference",
5124
- "name": "drop_kw"
5125
- }
5126
- },
5127
- {
5128
- "label": null,
5129
- "expression": {
5130
- "kind": "reference",
5131
- "name": "pass_expr"
5132
- }
5133
- },
5134
- {
5135
- "label": null,
4807
+ "label": "alternatives",
5136
4808
  "expression": {
5137
- "kind": "reference",
5138
- "name": "fold_left_expr"
5139
- }
5140
- },
5141
- {
5142
- "label": null,
5143
- "expression": {
5144
- "kind": "reference",
5145
- "name": "fold_right_expr"
5146
- }
5147
- },
5148
- {
5149
- "label": null,
5150
- "expression": {
5151
- "kind": "reference",
5152
- "name": "flatten_expr"
5153
- }
5154
- },
5155
- {
5156
- "label": null,
5157
- "expression": {
5158
- "kind": "reference",
5159
- "name": "build_expr"
5160
- }
5161
- }
5162
- ]
5163
- }
5164
- },
5165
- {
5166
- "name": "pass_expr",
5167
- "expression": {
5168
- "kind": "sequence",
5169
- "elements": [
5170
- {
5171
- "kind": "reference",
5172
- "name": "pass_kw"
5173
- },
5174
- {
5175
- "kind": "reference",
5176
- "name": "lpar"
5177
- },
5178
- {
5179
- "kind": "reference",
5180
- "name": "reference"
5181
- },
5182
- {
5183
- "kind": "reference",
5184
- "name": "rpar"
5185
- }
5186
- ]
5187
- }
5188
- },
5189
- {
5190
- "name": "fold_left_expr",
5191
- "expression": {
5192
- "kind": "sequence",
5193
- "elements": [
5194
- {
5195
- "kind": "reference",
5196
- "name": "fold_left_kw"
5197
- },
5198
- {
5199
- "kind": "reference",
5200
- "name": "lpar"
5201
- },
5202
- {
5203
- "kind": "reference",
5204
- "name": "build_target"
5205
- },
5206
- {
5207
- "kind": "reference",
5208
- "name": "comma"
5209
- },
5210
- {
5211
- "kind": "reference",
5212
- "name": "reference_list"
5213
- },
5214
- {
5215
- "kind": "reference",
5216
- "name": "rpar"
5217
- }
5218
- ]
5219
- }
5220
- },
5221
- {
5222
- "name": "fold_right_expr",
5223
- "expression": {
5224
- "kind": "sequence",
5225
- "elements": [
5226
- {
5227
- "kind": "reference",
5228
- "name": "fold_right_kw"
5229
- },
5230
- {
5231
- "kind": "reference",
5232
- "name": "lpar"
5233
- },
5234
- {
5235
- "kind": "reference",
5236
- "name": "build_target"
5237
- },
5238
- {
5239
- "kind": "reference",
5240
- "name": "comma"
5241
- },
5242
- {
5243
- "kind": "reference",
5244
- "name": "reference_list"
5245
- },
5246
- {
5247
- "kind": "reference",
5248
- "name": "rpar"
5249
- }
5250
- ]
5251
- }
5252
- },
5253
- {
5254
- "name": "flatten_expr",
5255
- "expression": {
5256
- "kind": "sequence",
5257
- "elements": [
5258
- {
5259
- "kind": "reference",
5260
- "name": "flatten_kw"
5261
- },
5262
- {
5263
- "kind": "reference",
5264
- "name": "lpar"
5265
- },
5266
- {
5267
- "kind": "reference",
5268
- "name": "build_target"
5269
- },
5270
- {
5271
- "kind": "reference",
5272
- "name": "comma"
5273
- },
5274
- {
5275
- "kind": "reference",
5276
- "name": "reference"
5277
- },
5278
- {
5279
- "kind": "reference",
5280
- "name": "comma"
5281
- },
5282
- {
5283
- "kind": "reference",
5284
- "name": "reference"
5285
- },
5286
- {
5287
- "kind": "reference",
5288
- "name": "rpar"
5289
- }
5290
- ]
5291
- }
5292
- },
5293
- {
5294
- "name": "build_expr",
5295
- "expression": {
5296
- "kind": "sequence",
5297
- "elements": [
5298
- {
5299
- "kind": "reference",
5300
- "name": "build_target"
5301
- },
5302
- {
5303
- "kind": "optional",
5304
- "element": {
5305
- "kind": "sequence",
5306
- "elements": [
5307
- {
5308
- "kind": "reference",
5309
- "name": "lpar"
5310
- },
5311
- {
5312
- "kind": "reference",
5313
- "name": "reference_list"
5314
- },
5315
- {
5316
- "kind": "reference",
5317
- "name": "rpar"
5318
- }
5319
- ]
4809
+ "kind": "repeat",
4810
+ "element": {
4811
+ "kind": "reference",
4812
+ "name": "labeled_transform"
4813
+ }
5320
4814
  }
5321
4815
  }
5322
4816
  ]
5323
4817
  }
5324
4818
  },
5325
- {
5326
- "name": "build_target",
5327
- "expression": {
5328
- "kind": "sequence",
5329
- "elements": [
5330
- {
5331
- "kind": "reference",
5332
- "name": "identifier"
5333
- },
5334
- {
5335
- "kind": "reference",
5336
- "name": "dot"
5337
- },
5338
- {
5339
- "kind": "reference",
5340
- "name": "hash"
5341
- },
5342
- {
5343
- "kind": "reference",
5344
- "name": "identifier"
5345
- }
5346
- ]
5347
- }
5348
- },
5349
4819
  {
5350
4820
  "name": "reference_list",
5351
4821
  "expression": {
5352
- "kind": "sequence",
5353
- "elements": [
5354
- {
5355
- "kind": "reference",
5356
- "name": "reference"
5357
- },
4822
+ "kind": "choice",
4823
+ "alternatives": [
5358
4824
  {
5359
- "kind": "repeat",
5360
- "element": {
5361
- "kind": "sequence",
5362
- "elements": [
5363
- {
5364
- "kind": "reference",
5365
- "name": "comma"
5366
- },
5367
- {
5368
- "kind": "reference",
5369
- "name": "reference"
5370
- }
5371
- ]
4825
+ "label": "references",
4826
+ "expression": {
4827
+ "kind": "repeat",
4828
+ "element": {
4829
+ "kind": "reference",
4830
+ "name": "reference"
4831
+ }
5372
4832
  }
5373
4833
  }
5374
4834
  ]
5375
4835
  }
5376
4836
  },
5377
- {
5378
- "name": "reference",
5379
- "expression": {
5380
- "kind": "reference",
5381
- "name": "identifier"
5382
- }
5383
- },
5384
- {
5385
- "name": "expression",
5386
- "expression": {
5387
- "kind": "reference",
5388
- "name": "choice"
5389
- }
5390
- },
5391
4837
  {
5392
4838
  "name": "choice",
5393
- "expression": {
5394
- "kind": "sequence",
5395
- "elements": [
5396
- {
5397
- "kind": "reference",
5398
- "name": "alternative"
5399
- },
5400
- {
5401
- "kind": "repeat",
5402
- "element": {
5403
- "kind": "sequence",
5404
- "elements": [
5405
- {
5406
- "kind": "reference",
5407
- "name": "bar"
5408
- },
5409
- {
5410
- "kind": "reference",
5411
- "name": "alternative"
5412
- }
5413
- ]
5414
- }
5415
- }
5416
- ]
5417
- }
5418
- },
5419
- {
5420
- "name": "alternative",
5421
- "expression": {
5422
- "kind": "reference",
5423
- "name": "labeled_alternative"
5424
- }
5425
- },
5426
- {
5427
- "name": "labeled_alternative",
5428
- "expression": {
5429
- "kind": "sequence",
5430
- "elements": [
5431
- {
5432
- "kind": "optional",
5433
- "element": {
5434
- "kind": "sequence",
5435
- "elements": [
5436
- {
5437
- "kind": "reference",
5438
- "name": "hash"
5439
- },
5440
- {
5441
- "kind": "reference",
5442
- "name": "identifier"
5443
- }
5444
- ]
5445
- }
5446
- },
5447
- {
5448
- "kind": "reference",
5449
- "name": "sequence"
5450
- }
5451
- ]
5452
- }
5453
- },
5454
- {
5455
- "name": "sequence",
5456
- "expression": {
5457
- "kind": "sequence",
5458
- "elements": [
5459
- {
5460
- "kind": "reference",
5461
- "name": "factor"
5462
- },
5463
- {
5464
- "kind": "repeat",
5465
- "element": {
5466
- "kind": "reference",
5467
- "name": "factor"
5468
- }
5469
- }
5470
- ]
5471
- }
5472
- },
5473
- {
5474
- "name": "factor",
5475
4839
  "expression": {
5476
4840
  "kind": "choice",
5477
4841
  "alternatives": [
5478
4842
  {
5479
- "label": null,
4843
+ "label": "alternatives",
5480
4844
  "expression": {
5481
- "kind": "reference",
5482
- "name": "bracketed"
5483
- }
5484
- },
5485
- {
5486
- "label": null,
5487
- "expression": {
5488
- "kind": "reference",
5489
- "name": "repeat"
5490
- }
5491
- },
5492
- {
5493
- "label": null,
5494
- "expression": {
5495
- "kind": "reference",
5496
- "name": "group"
5497
- }
5498
- },
5499
- {
5500
- "label": null,
5501
- "expression": {
5502
- "kind": "reference",
5503
- "name": "primary"
4845
+ "kind": "repeat",
4846
+ "element": {
4847
+ "kind": "reference",
4848
+ "name": "alternative"
4849
+ }
5504
4850
  }
5505
4851
  }
5506
4852
  ]
5507
4853
  }
5508
4854
  },
5509
4855
  {
5510
- "name": "bracketed",
5511
- "expression": {
5512
- "kind": "sequence",
5513
- "elements": [
5514
- {
5515
- "kind": "reference",
5516
- "name": "lbracket"
5517
- },
5518
- {
5519
- "kind": "reference",
5520
- "name": "expression"
5521
- },
5522
- {
5523
- "kind": "reference",
5524
- "name": "rbracket"
5525
- },
5526
- {
5527
- "kind": "optional",
5528
- "element": {
5529
- "kind": "sequence",
5530
- "elements": [
5531
- {
5532
- "kind": "reference",
5533
- "name": "colon"
5534
- },
5535
- {
5536
- "kind": "reference",
5537
- "name": "identifier"
5538
- }
5539
- ]
5540
- }
5541
- }
5542
- ]
5543
- }
5544
- },
5545
- {
5546
- "name": "repeat",
5547
- "expression": {
5548
- "kind": "sequence",
5549
- "elements": [
5550
- {
5551
- "kind": "reference",
5552
- "name": "lbrace"
5553
- },
5554
- {
5555
- "kind": "reference",
5556
- "name": "expression"
5557
- },
5558
- {
5559
- "kind": "reference",
5560
- "name": "rbrace"
5561
- }
5562
- ]
5563
- }
5564
- },
5565
- {
5566
- "name": "group",
5567
- "expression": {
5568
- "kind": "sequence",
5569
- "elements": [
5570
- {
5571
- "kind": "reference",
5572
- "name": "lpar"
5573
- },
5574
- {
5575
- "kind": "reference",
5576
- "name": "expression"
5577
- },
5578
- {
5579
- "kind": "reference",
5580
- "name": "rpar"
5581
- }
5582
- ]
5583
- }
5584
- },
5585
- {
5586
- "name": "primary",
4856
+ "name": "sequence",
5587
4857
  "expression": {
5588
4858
  "kind": "choice",
5589
4859
  "alternatives": [
5590
4860
  {
5591
- "label": null,
5592
- "expression": {
5593
- "kind": "reference",
5594
- "name": "string_literal"
5595
- }
5596
- },
5597
- {
5598
- "label": null,
4861
+ "label": "factors",
5599
4862
  "expression": {
5600
- "kind": "reference",
5601
- "name": "identifier"
4863
+ "kind": "repeat",
4864
+ "element": {
4865
+ "kind": "reference",
4866
+ "name": "factor"
4867
+ }
5602
4868
  }
5603
4869
  }
5604
4870
  ]
@@ -5622,7 +4888,7 @@
5622
4888
  ]
5623
4889
  },
5624
4890
  {
5625
- "production": "token_section$repeat_1",
4891
+ "production": "token_section",
5626
4892
  "alternatives": [
5627
4893
  {
5628
4894
  "label": "main",
@@ -5637,7 +4903,7 @@
5637
4903
  ]
5638
4904
  },
5639
4905
  {
5640
- "production": "skip_section$repeat_2",
4906
+ "production": "skip_section",
5641
4907
  "alternatives": [
5642
4908
  {
5643
4909
  "label": "main",
@@ -5652,7 +4918,7 @@
5652
4918
  ]
5653
4919
  },
5654
4920
  {
5655
- "production": "grammar_section$repeat_4",
4921
+ "production": "grammar_section",
5656
4922
  "alternatives": [
5657
4923
  {
5658
4924
  "label": "main",
@@ -5667,7 +4933,7 @@
5667
4933
  ]
5668
4934
  },
5669
4935
  {
5670
- "production": "ast_section$repeat_5",
4936
+ "production": "ast_section",
5671
4937
  "alternatives": [
5672
4938
  {
5673
4939
  "label": "main",
@@ -5682,7 +4948,7 @@
5682
4948
  ]
5683
4949
  },
5684
4950
  {
5685
- "production": "transform_section$repeat_6",
4951
+ "production": "transform_section",
5686
4952
  "alternatives": [
5687
4953
  {
5688
4954
  "label": "main",
@@ -5697,7 +4963,7 @@
5697
4963
  ]
5698
4964
  },
5699
4965
  {
5700
- "production": "transform_rule$repeat_7",
4966
+ "production": "transform_rule",
5701
4967
  "alternatives": [
5702
4968
  {
5703
4969
  "label": "main",
@@ -5712,7 +4978,7 @@
5712
4978
  ]
5713
4979
  },
5714
4980
  {
5715
- "production": "reference_list$repeat_8",
4981
+ "production": "reference_list",
5716
4982
  "alternatives": [
5717
4983
  {
5718
4984
  "label": "main",
@@ -5727,7 +4993,7 @@
5727
4993
  ]
5728
4994
  },
5729
4995
  {
5730
- "production": "choice$repeat_9",
4996
+ "production": "choice",
5731
4997
  "alternatives": [
5732
4998
  {
5733
4999
  "label": "main",
@@ -5742,7 +5008,7 @@
5742
5008
  ]
5743
5009
  },
5744
5010
  {
5745
- "production": "sequence$repeat_10",
5011
+ "production": "sequence",
5746
5012
  "alternatives": [
5747
5013
  {
5748
5014
  "label": "main",