@mica-js/ddl 0.0.0-stage → 0.2.0

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