@likec4/language-server 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.
Files changed (59) hide show
  1. package/dist/ast.d.ts +72 -0
  2. package/dist/ast.js +131 -0
  3. package/dist/elementRef.d.ts +6 -0
  4. package/dist/elementRef.js +39 -0
  5. package/dist/generated/ast.d.ts +346 -0
  6. package/dist/generated/ast.js +353 -0
  7. package/dist/generated/grammar.d.ts +6 -0
  8. package/dist/generated/grammar.js +2259 -0
  9. package/dist/generated/module.d.ts +9 -0
  10. package/dist/generated/module.js +26 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.js +16 -0
  13. package/dist/logger.d.ts +8 -0
  14. package/dist/logger.js +20 -0
  15. package/dist/lsp/CodeLensProvider.d.ts +8 -0
  16. package/dist/lsp/CodeLensProvider.js +35 -0
  17. package/dist/lsp/DocumentSymbolProvider.d.ts +21 -0
  18. package/dist/lsp/DocumentSymbolProvider.js +138 -0
  19. package/dist/lsp/HoverProvider.d.ts +8 -0
  20. package/dist/lsp/HoverProvider.js +57 -0
  21. package/dist/lsp/SemanticTokenProvider.d.ts +6 -0
  22. package/dist/lsp/SemanticTokenProvider.js +245 -0
  23. package/dist/lsp/index.d.ts +4 -0
  24. package/dist/lsp/index.js +4 -0
  25. package/dist/model/fqn-index.d.ts +17 -0
  26. package/dist/model/fqn-index.js +136 -0
  27. package/dist/model/index.d.ts +3 -0
  28. package/dist/model/index.js +3 -0
  29. package/dist/model/model-builder.d.ts +26 -0
  30. package/dist/model/model-builder.js +325 -0
  31. package/dist/model/model-locator.d.ts +16 -0
  32. package/dist/model/model-locator.js +108 -0
  33. package/dist/module.d.ts +18 -0
  34. package/dist/module.js +57 -0
  35. package/dist/protocol.d.ts +35 -0
  36. package/dist/protocol.js +19 -0
  37. package/dist/references/index.d.ts +2 -0
  38. package/dist/references/index.js +2 -0
  39. package/dist/references/scope-computation.d.ts +10 -0
  40. package/dist/references/scope-computation.js +76 -0
  41. package/dist/references/scope-provider.d.ts +15 -0
  42. package/dist/references/scope-provider.js +110 -0
  43. package/dist/registerProtocolHandlers.d.ts +2 -0
  44. package/dist/registerProtocolHandlers.js +49 -0
  45. package/dist/test/index.d.ts +1 -0
  46. package/dist/test/index.js +1 -0
  47. package/dist/test/testServices.d.ts +15 -0
  48. package/dist/test/testServices.js +53 -0
  49. package/dist/utils.d.ts +2 -0
  50. package/dist/utils.js +7 -0
  51. package/dist/validation/element.d.ts +5 -0
  52. package/dist/validation/element.js +20 -0
  53. package/dist/validation/index.d.ts +2 -0
  54. package/dist/validation/index.js +20 -0
  55. package/dist/validation/specification.d.ts +5 -0
  56. package/dist/validation/specification.js +31 -0
  57. package/dist/validation/view.d.ts +4 -0
  58. package/dist/validation/view.js +19 -0
  59. package/package.json +84 -0
@@ -0,0 +1,2259 @@
1
+ /******************************************************************************
2
+ * This file was generated by langium-cli 1.1.0.
3
+ * DO NOT EDIT MANUALLY!
4
+ ******************************************************************************/
5
+ import { loadGrammarFromJson } from 'langium';
6
+ let loadedLikeC4Grammar;
7
+ export const LikeC4Grammar = () => loadedLikeC4Grammar ?? (loadedLikeC4Grammar = loadGrammarFromJson(`{
8
+ "$type": "Grammar",
9
+ "isDeclared": true,
10
+ "name": "LikeC4",
11
+ "imports": [],
12
+ "rules": [
13
+ {
14
+ "$type": "ParserRule",
15
+ "name": "LikeC4Document",
16
+ "entry": true,
17
+ "definition": {
18
+ "$type": "Group",
19
+ "elements": [
20
+ {
21
+ "$type": "Assignment",
22
+ "feature": "specification",
23
+ "operator": "=",
24
+ "terminal": {
25
+ "$type": "RuleCall",
26
+ "rule": {
27
+ "$ref": "#/rules@1"
28
+ },
29
+ "arguments": []
30
+ },
31
+ "cardinality": "?"
32
+ },
33
+ {
34
+ "$type": "Assignment",
35
+ "feature": "model",
36
+ "operator": "=",
37
+ "terminal": {
38
+ "$type": "RuleCall",
39
+ "rule": {
40
+ "$ref": "#/rules@27"
41
+ },
42
+ "arguments": []
43
+ },
44
+ "cardinality": "?"
45
+ },
46
+ {
47
+ "$type": "Assignment",
48
+ "feature": "views",
49
+ "operator": "=",
50
+ "terminal": {
51
+ "$type": "RuleCall",
52
+ "rule": {
53
+ "$ref": "#/rules@42"
54
+ },
55
+ "arguments": []
56
+ },
57
+ "cardinality": "?"
58
+ }
59
+ ]
60
+ },
61
+ "definesHiddenTokens": false,
62
+ "fragment": false,
63
+ "hiddenTokens": [],
64
+ "parameters": [],
65
+ "wildcard": false
66
+ },
67
+ {
68
+ "$type": "ParserRule",
69
+ "name": "SpecificationRule",
70
+ "definition": {
71
+ "$type": "Group",
72
+ "elements": [
73
+ {
74
+ "$type": "Assignment",
75
+ "feature": "name",
76
+ "operator": "=",
77
+ "terminal": {
78
+ "$type": "Keyword",
79
+ "value": "specification"
80
+ }
81
+ },
82
+ {
83
+ "$type": "RuleCall",
84
+ "rule": {
85
+ "$ref": "#/rules@15"
86
+ },
87
+ "arguments": []
88
+ },
89
+ {
90
+ "$type": "Alternatives",
91
+ "elements": [
92
+ {
93
+ "$type": "Assignment",
94
+ "feature": "elementKinds",
95
+ "operator": "+=",
96
+ "terminal": {
97
+ "$type": "RuleCall",
98
+ "rule": {
99
+ "$ref": "#/rules@2"
100
+ },
101
+ "arguments": []
102
+ }
103
+ },
104
+ {
105
+ "$type": "Assignment",
106
+ "feature": "tags",
107
+ "operator": "+=",
108
+ "terminal": {
109
+ "$type": "RuleCall",
110
+ "rule": {
111
+ "$ref": "#/rules@4"
112
+ },
113
+ "arguments": []
114
+ }
115
+ }
116
+ ],
117
+ "cardinality": "*"
118
+ },
119
+ {
120
+ "$type": "RuleCall",
121
+ "rule": {
122
+ "$ref": "#/rules@16"
123
+ },
124
+ "arguments": []
125
+ }
126
+ ]
127
+ },
128
+ "definesHiddenTokens": false,
129
+ "entry": false,
130
+ "fragment": false,
131
+ "hiddenTokens": [],
132
+ "parameters": [],
133
+ "wildcard": false
134
+ },
135
+ {
136
+ "$type": "ParserRule",
137
+ "name": "SpecificationElementKind",
138
+ "definition": {
139
+ "$type": "Group",
140
+ "elements": [
141
+ {
142
+ "$type": "Keyword",
143
+ "value": "element"
144
+ },
145
+ {
146
+ "$type": "Assignment",
147
+ "feature": "kind",
148
+ "operator": "=",
149
+ "terminal": {
150
+ "$type": "RuleCall",
151
+ "rule": {
152
+ "$ref": "#/rules@8"
153
+ },
154
+ "arguments": []
155
+ }
156
+ },
157
+ {
158
+ "$type": "Group",
159
+ "elements": [
160
+ {
161
+ "$type": "RuleCall",
162
+ "rule": {
163
+ "$ref": "#/rules@15"
164
+ },
165
+ "arguments": []
166
+ },
167
+ {
168
+ "$type": "Assignment",
169
+ "feature": "style",
170
+ "operator": "=",
171
+ "terminal": {
172
+ "$type": "RuleCall",
173
+ "rule": {
174
+ "$ref": "#/rules@3"
175
+ },
176
+ "arguments": []
177
+ },
178
+ "cardinality": "?"
179
+ },
180
+ {
181
+ "$type": "RuleCall",
182
+ "rule": {
183
+ "$ref": "#/rules@16"
184
+ },
185
+ "arguments": []
186
+ }
187
+ ],
188
+ "cardinality": "?"
189
+ }
190
+ ]
191
+ },
192
+ "definesHiddenTokens": false,
193
+ "entry": false,
194
+ "fragment": false,
195
+ "hiddenTokens": [],
196
+ "parameters": [],
197
+ "wildcard": false
198
+ },
199
+ {
200
+ "$type": "ParserRule",
201
+ "name": "SpecificationElementKindStyle",
202
+ "definition": {
203
+ "$type": "Group",
204
+ "elements": [
205
+ {
206
+ "$type": "Keyword",
207
+ "value": "style"
208
+ },
209
+ {
210
+ "$type": "RuleCall",
211
+ "rule": {
212
+ "$ref": "#/rules@15"
213
+ },
214
+ "arguments": []
215
+ },
216
+ {
217
+ "$type": "Assignment",
218
+ "feature": "props",
219
+ "operator": "+=",
220
+ "terminal": {
221
+ "$type": "Alternatives",
222
+ "elements": [
223
+ {
224
+ "$type": "RuleCall",
225
+ "rule": {
226
+ "$ref": "#/rules@5"
227
+ },
228
+ "arguments": []
229
+ },
230
+ {
231
+ "$type": "RuleCall",
232
+ "rule": {
233
+ "$ref": "#/rules@6"
234
+ },
235
+ "arguments": []
236
+ }
237
+ ]
238
+ },
239
+ "cardinality": "*"
240
+ },
241
+ {
242
+ "$type": "RuleCall",
243
+ "rule": {
244
+ "$ref": "#/rules@16"
245
+ },
246
+ "arguments": []
247
+ }
248
+ ]
249
+ },
250
+ "definesHiddenTokens": false,
251
+ "entry": false,
252
+ "fragment": false,
253
+ "hiddenTokens": [],
254
+ "parameters": [],
255
+ "wildcard": false
256
+ },
257
+ {
258
+ "$type": "ParserRule",
259
+ "name": "SpecificationTag",
260
+ "definition": {
261
+ "$type": "Group",
262
+ "elements": [
263
+ {
264
+ "$type": "Keyword",
265
+ "value": "tag"
266
+ },
267
+ {
268
+ "$type": "Assignment",
269
+ "feature": "tag",
270
+ "operator": "=",
271
+ "terminal": {
272
+ "$type": "RuleCall",
273
+ "rule": {
274
+ "$ref": "#/rules@9"
275
+ },
276
+ "arguments": []
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ "definesHiddenTokens": false,
282
+ "entry": false,
283
+ "fragment": false,
284
+ "hiddenTokens": [],
285
+ "parameters": [],
286
+ "wildcard": false
287
+ },
288
+ {
289
+ "$type": "ParserRule",
290
+ "name": "ColorProperty",
291
+ "definition": {
292
+ "$type": "Group",
293
+ "elements": [
294
+ {
295
+ "$type": "Assignment",
296
+ "feature": "key",
297
+ "operator": "=",
298
+ "terminal": {
299
+ "$type": "Keyword",
300
+ "value": "color"
301
+ }
302
+ },
303
+ {
304
+ "$type": "RuleCall",
305
+ "rule": {
306
+ "$ref": "#/rules@17"
307
+ },
308
+ "arguments": [],
309
+ "cardinality": "?"
310
+ },
311
+ {
312
+ "$type": "Assignment",
313
+ "feature": "value",
314
+ "operator": "=",
315
+ "terminal": {
316
+ "$type": "RuleCall",
317
+ "rule": {
318
+ "$ref": "#/rules@10"
319
+ },
320
+ "arguments": []
321
+ }
322
+ }
323
+ ]
324
+ },
325
+ "definesHiddenTokens": false,
326
+ "entry": false,
327
+ "fragment": false,
328
+ "hiddenTokens": [],
329
+ "parameters": [],
330
+ "wildcard": false
331
+ },
332
+ {
333
+ "$type": "ParserRule",
334
+ "name": "ShapeProperty",
335
+ "definition": {
336
+ "$type": "Group",
337
+ "elements": [
338
+ {
339
+ "$type": "Assignment",
340
+ "feature": "key",
341
+ "operator": "=",
342
+ "terminal": {
343
+ "$type": "Keyword",
344
+ "value": "shape"
345
+ }
346
+ },
347
+ {
348
+ "$type": "RuleCall",
349
+ "rule": {
350
+ "$ref": "#/rules@17"
351
+ },
352
+ "arguments": [],
353
+ "cardinality": "?"
354
+ },
355
+ {
356
+ "$type": "Assignment",
357
+ "feature": "value",
358
+ "operator": "=",
359
+ "terminal": {
360
+ "$type": "RuleCall",
361
+ "rule": {
362
+ "$ref": "#/rules@11"
363
+ },
364
+ "arguments": []
365
+ }
366
+ }
367
+ ]
368
+ },
369
+ "definesHiddenTokens": false,
370
+ "entry": false,
371
+ "fragment": false,
372
+ "hiddenTokens": [],
373
+ "parameters": [],
374
+ "wildcard": false
375
+ },
376
+ {
377
+ "$type": "ParserRule",
378
+ "name": "AStyleProperty",
379
+ "definition": {
380
+ "$type": "Alternatives",
381
+ "elements": [
382
+ {
383
+ "$type": "RuleCall",
384
+ "rule": {
385
+ "$ref": "#/rules@5"
386
+ },
387
+ "arguments": []
388
+ },
389
+ {
390
+ "$type": "RuleCall",
391
+ "rule": {
392
+ "$ref": "#/rules@6"
393
+ },
394
+ "arguments": []
395
+ }
396
+ ]
397
+ },
398
+ "definesHiddenTokens": false,
399
+ "entry": false,
400
+ "fragment": false,
401
+ "hiddenTokens": [],
402
+ "parameters": [],
403
+ "wildcard": false
404
+ },
405
+ {
406
+ "$type": "ParserRule",
407
+ "name": "ElementKind",
408
+ "definition": {
409
+ "$type": "Assignment",
410
+ "feature": "name",
411
+ "operator": "=",
412
+ "terminal": {
413
+ "$type": "RuleCall",
414
+ "rule": {
415
+ "$ref": "#/rules@12"
416
+ },
417
+ "arguments": []
418
+ }
419
+ },
420
+ "definesHiddenTokens": false,
421
+ "entry": false,
422
+ "fragment": false,
423
+ "hiddenTokens": [],
424
+ "parameters": [],
425
+ "wildcard": false
426
+ },
427
+ {
428
+ "$type": "ParserRule",
429
+ "name": "Tag",
430
+ "definition": {
431
+ "$type": "Assignment",
432
+ "feature": "name",
433
+ "operator": "=",
434
+ "terminal": {
435
+ "$type": "RuleCall",
436
+ "rule": {
437
+ "$ref": "#/rules@12"
438
+ },
439
+ "arguments": []
440
+ }
441
+ },
442
+ "definesHiddenTokens": false,
443
+ "entry": false,
444
+ "fragment": false,
445
+ "hiddenTokens": [],
446
+ "parameters": [],
447
+ "wildcard": false
448
+ },
449
+ {
450
+ "$type": "ParserRule",
451
+ "name": "ThemeColor",
452
+ "dataType": "string",
453
+ "definition": {
454
+ "$type": "Alternatives",
455
+ "elements": [
456
+ {
457
+ "$type": "Keyword",
458
+ "value": "primary"
459
+ },
460
+ {
461
+ "$type": "Keyword",
462
+ "value": "secondary"
463
+ },
464
+ {
465
+ "$type": "Keyword",
466
+ "value": "muted"
467
+ }
468
+ ]
469
+ },
470
+ "definesHiddenTokens": false,
471
+ "entry": false,
472
+ "fragment": false,
473
+ "hiddenTokens": [],
474
+ "parameters": [],
475
+ "wildcard": false
476
+ },
477
+ {
478
+ "$type": "ParserRule",
479
+ "name": "ElementShape",
480
+ "dataType": "string",
481
+ "definition": {
482
+ "$type": "Alternatives",
483
+ "elements": [
484
+ {
485
+ "$type": "Keyword",
486
+ "value": "rectangle"
487
+ },
488
+ {
489
+ "$type": "Keyword",
490
+ "value": "person"
491
+ },
492
+ {
493
+ "$type": "Keyword",
494
+ "value": "browser"
495
+ },
496
+ {
497
+ "$type": "Keyword",
498
+ "value": "cylinder"
499
+ },
500
+ {
501
+ "$type": "Keyword",
502
+ "value": "storage"
503
+ },
504
+ {
505
+ "$type": "Keyword",
506
+ "value": "queue"
507
+ }
508
+ ]
509
+ },
510
+ "definesHiddenTokens": false,
511
+ "entry": false,
512
+ "fragment": false,
513
+ "hiddenTokens": [],
514
+ "parameters": [],
515
+ "wildcard": false
516
+ },
517
+ {
518
+ "$type": "ParserRule",
519
+ "name": "Name",
520
+ "dataType": "string",
521
+ "definition": {
522
+ "$type": "Alternatives",
523
+ "elements": [
524
+ {
525
+ "$type": "RuleCall",
526
+ "rule": {
527
+ "$ref": "#/rules@11"
528
+ },
529
+ "arguments": []
530
+ },
531
+ {
532
+ "$type": "RuleCall",
533
+ "rule": {
534
+ "$ref": "#/rules@10"
535
+ },
536
+ "arguments": []
537
+ },
538
+ {
539
+ "$type": "Keyword",
540
+ "value": "model"
541
+ },
542
+ {
543
+ "$type": "RuleCall",
544
+ "rule": {
545
+ "$ref": "#/rules@23"
546
+ },
547
+ "arguments": []
548
+ }
549
+ ]
550
+ },
551
+ "definesHiddenTokens": false,
552
+ "entry": false,
553
+ "fragment": false,
554
+ "hiddenTokens": [],
555
+ "parameters": [],
556
+ "wildcard": false
557
+ },
558
+ {
559
+ "$type": "TerminalRule",
560
+ "name": "Dot",
561
+ "definition": {
562
+ "$type": "CharacterRange",
563
+ "left": {
564
+ "$type": "Keyword",
565
+ "value": "."
566
+ }
567
+ },
568
+ "fragment": false,
569
+ "hidden": false
570
+ },
571
+ {
572
+ "$type": "TerminalRule",
573
+ "name": "Eq",
574
+ "definition": {
575
+ "$type": "CharacterRange",
576
+ "left": {
577
+ "$type": "Keyword",
578
+ "value": "="
579
+ }
580
+ },
581
+ "fragment": false,
582
+ "hidden": false
583
+ },
584
+ {
585
+ "$type": "TerminalRule",
586
+ "name": "OpenBlock",
587
+ "definition": {
588
+ "$type": "CharacterRange",
589
+ "left": {
590
+ "$type": "Keyword",
591
+ "value": "{"
592
+ }
593
+ },
594
+ "fragment": false,
595
+ "hidden": false
596
+ },
597
+ {
598
+ "$type": "TerminalRule",
599
+ "name": "CloseBlock",
600
+ "definition": {
601
+ "$type": "CharacterRange",
602
+ "left": {
603
+ "$type": "Keyword",
604
+ "value": "}"
605
+ }
606
+ },
607
+ "fragment": false,
608
+ "hidden": false
609
+ },
610
+ {
611
+ "$type": "TerminalRule",
612
+ "name": "Colon",
613
+ "definition": {
614
+ "$type": "CharacterRange",
615
+ "left": {
616
+ "$type": "Keyword",
617
+ "value": ":"
618
+ }
619
+ },
620
+ "fragment": false,
621
+ "hidden": false
622
+ },
623
+ {
624
+ "$type": "TerminalRule",
625
+ "name": "Comma",
626
+ "definition": {
627
+ "$type": "CharacterRange",
628
+ "left": {
629
+ "$type": "Keyword",
630
+ "value": ","
631
+ }
632
+ },
633
+ "fragment": false,
634
+ "hidden": false
635
+ },
636
+ {
637
+ "$type": "TerminalRule",
638
+ "name": "Star",
639
+ "definition": {
640
+ "$type": "CharacterRange",
641
+ "left": {
642
+ "$type": "Keyword",
643
+ "value": "*"
644
+ }
645
+ },
646
+ "fragment": false,
647
+ "hidden": false
648
+ },
649
+ {
650
+ "$type": "TerminalRule",
651
+ "name": "Semi",
652
+ "definition": {
653
+ "$type": "CharacterRange",
654
+ "left": {
655
+ "$type": "Keyword",
656
+ "value": ";"
657
+ }
658
+ },
659
+ "fragment": false,
660
+ "hidden": false
661
+ },
662
+ {
663
+ "$type": "TerminalRule",
664
+ "name": "TagID",
665
+ "type": {
666
+ "$type": "ReturnType",
667
+ "name": "string"
668
+ },
669
+ "definition": {
670
+ "$type": "TerminalGroup",
671
+ "elements": [
672
+ {
673
+ "$type": "CharacterRange",
674
+ "left": {
675
+ "$type": "Keyword",
676
+ "value": "#"
677
+ }
678
+ },
679
+ {
680
+ "$type": "TerminalRuleCall",
681
+ "rule": {
682
+ "$ref": "#/rules@23"
683
+ }
684
+ }
685
+ ]
686
+ },
687
+ "fragment": false,
688
+ "hidden": false
689
+ },
690
+ {
691
+ "$type": "TerminalRule",
692
+ "name": "STRING",
693
+ "definition": {
694
+ "$type": "RegexToken",
695
+ "regex": "\\"[^\\"]*\\"|'[^']*'"
696
+ },
697
+ "fragment": false,
698
+ "hidden": false
699
+ },
700
+ {
701
+ "$type": "TerminalRule",
702
+ "name": "ID",
703
+ "definition": {
704
+ "$type": "RegexToken",
705
+ "regex": "[_a-zA-Z][\\\\w_]*"
706
+ },
707
+ "fragment": false,
708
+ "hidden": false
709
+ },
710
+ {
711
+ "$type": "TerminalRule",
712
+ "hidden": true,
713
+ "name": "WS",
714
+ "definition": {
715
+ "$type": "RegexToken",
716
+ "regex": "[ \\\\t\\\\r\\\\n\\\\f]+"
717
+ },
718
+ "fragment": false
719
+ },
720
+ {
721
+ "$type": "TerminalRule",
722
+ "hidden": true,
723
+ "name": "BLOCK_COMMENT",
724
+ "definition": {
725
+ "$type": "RegexToken",
726
+ "regex": "\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/"
727
+ },
728
+ "fragment": false
729
+ },
730
+ {
731
+ "$type": "TerminalRule",
732
+ "hidden": true,
733
+ "name": "LINE_COMMENT",
734
+ "definition": {
735
+ "$type": "RegexToken",
736
+ "regex": "\\\\/\\\\/[^\\\\n\\\\r]*"
737
+ },
738
+ "fragment": false
739
+ },
740
+ {
741
+ "$type": "ParserRule",
742
+ "name": "Model",
743
+ "definition": {
744
+ "$type": "Group",
745
+ "elements": [
746
+ {
747
+ "$type": "Assignment",
748
+ "feature": "name",
749
+ "operator": "=",
750
+ "terminal": {
751
+ "$type": "Keyword",
752
+ "value": "model"
753
+ }
754
+ },
755
+ {
756
+ "$type": "RuleCall",
757
+ "rule": {
758
+ "$ref": "#/rules@15"
759
+ },
760
+ "arguments": []
761
+ },
762
+ {
763
+ "$type": "Assignment",
764
+ "feature": "elements",
765
+ "operator": "+=",
766
+ "terminal": {
767
+ "$type": "Alternatives",
768
+ "elements": [
769
+ {
770
+ "$type": "RuleCall",
771
+ "rule": {
772
+ "$ref": "#/rules@28"
773
+ },
774
+ "arguments": []
775
+ },
776
+ {
777
+ "$type": "RuleCall",
778
+ "rule": {
779
+ "$ref": "#/rules@31"
780
+ },
781
+ "arguments": []
782
+ },
783
+ {
784
+ "$type": "RuleCall",
785
+ "rule": {
786
+ "$ref": "#/rules@39"
787
+ },
788
+ "arguments": []
789
+ }
790
+ ]
791
+ },
792
+ "cardinality": "*"
793
+ },
794
+ {
795
+ "$type": "RuleCall",
796
+ "rule": {
797
+ "$ref": "#/rules@16"
798
+ },
799
+ "arguments": []
800
+ }
801
+ ]
802
+ },
803
+ "definesHiddenTokens": false,
804
+ "entry": false,
805
+ "fragment": false,
806
+ "hiddenTokens": [],
807
+ "parameters": [],
808
+ "wildcard": false
809
+ },
810
+ {
811
+ "$type": "ParserRule",
812
+ "name": "Element",
813
+ "definition": {
814
+ "$type": "Group",
815
+ "elements": [
816
+ {
817
+ "$type": "Alternatives",
818
+ "elements": [
819
+ {
820
+ "$type": "Group",
821
+ "elements": [
822
+ {
823
+ "$type": "Assignment",
824
+ "feature": "kind",
825
+ "operator": "=",
826
+ "terminal": {
827
+ "$type": "CrossReference",
828
+ "type": {
829
+ "$ref": "#/rules@8"
830
+ },
831
+ "terminal": {
832
+ "$type": "RuleCall",
833
+ "rule": {
834
+ "$ref": "#/rules@12"
835
+ },
836
+ "arguments": []
837
+ },
838
+ "deprecatedSyntax": false
839
+ }
840
+ },
841
+ {
842
+ "$type": "Assignment",
843
+ "feature": "name",
844
+ "operator": "=",
845
+ "terminal": {
846
+ "$type": "RuleCall",
847
+ "rule": {
848
+ "$ref": "#/rules@12"
849
+ },
850
+ "arguments": []
851
+ }
852
+ }
853
+ ]
854
+ },
855
+ {
856
+ "$type": "Group",
857
+ "elements": [
858
+ {
859
+ "$type": "Assignment",
860
+ "feature": "name",
861
+ "operator": "=",
862
+ "terminal": {
863
+ "$type": "RuleCall",
864
+ "rule": {
865
+ "$ref": "#/rules@12"
866
+ },
867
+ "arguments": []
868
+ }
869
+ },
870
+ {
871
+ "$type": "RuleCall",
872
+ "rule": {
873
+ "$ref": "#/rules@14"
874
+ },
875
+ "arguments": []
876
+ },
877
+ {
878
+ "$type": "Assignment",
879
+ "feature": "kind",
880
+ "operator": "=",
881
+ "terminal": {
882
+ "$type": "CrossReference",
883
+ "type": {
884
+ "$ref": "#/rules@8"
885
+ },
886
+ "terminal": {
887
+ "$type": "RuleCall",
888
+ "rule": {
889
+ "$ref": "#/rules@12"
890
+ },
891
+ "arguments": []
892
+ },
893
+ "deprecatedSyntax": false
894
+ }
895
+ },
896
+ {
897
+ "$type": "Assignment",
898
+ "feature": "title",
899
+ "operator": "=",
900
+ "terminal": {
901
+ "$type": "RuleCall",
902
+ "rule": {
903
+ "$ref": "#/rules@22"
904
+ },
905
+ "arguments": []
906
+ },
907
+ "cardinality": "?"
908
+ }
909
+ ]
910
+ }
911
+ ]
912
+ },
913
+ {
914
+ "$type": "Assignment",
915
+ "feature": "body",
916
+ "operator": "=",
917
+ "terminal": {
918
+ "$type": "RuleCall",
919
+ "rule": {
920
+ "$ref": "#/rules@29"
921
+ },
922
+ "arguments": []
923
+ },
924
+ "cardinality": "?"
925
+ }
926
+ ]
927
+ },
928
+ "definesHiddenTokens": false,
929
+ "entry": false,
930
+ "fragment": false,
931
+ "hiddenTokens": [],
932
+ "parameters": [],
933
+ "wildcard": false
934
+ },
935
+ {
936
+ "$type": "ParserRule",
937
+ "name": "ElementBody",
938
+ "definition": {
939
+ "$type": "Group",
940
+ "elements": [
941
+ {
942
+ "$type": "RuleCall",
943
+ "rule": {
944
+ "$ref": "#/rules@15"
945
+ },
946
+ "arguments": []
947
+ },
948
+ {
949
+ "$type": "Assignment",
950
+ "feature": "tags",
951
+ "operator": "=",
952
+ "terminal": {
953
+ "$type": "RuleCall",
954
+ "rule": {
955
+ "$ref": "#/rules@35"
956
+ },
957
+ "arguments": []
958
+ },
959
+ "cardinality": "?"
960
+ },
961
+ {
962
+ "$type": "Assignment",
963
+ "feature": "props",
964
+ "operator": "+=",
965
+ "terminal": {
966
+ "$type": "RuleCall",
967
+ "rule": {
968
+ "$ref": "#/rules@30"
969
+ },
970
+ "arguments": []
971
+ },
972
+ "cardinality": "*"
973
+ },
974
+ {
975
+ "$type": "Assignment",
976
+ "feature": "elements",
977
+ "operator": "+=",
978
+ "terminal": {
979
+ "$type": "Alternatives",
980
+ "elements": [
981
+ {
982
+ "$type": "RuleCall",
983
+ "rule": {
984
+ "$ref": "#/rules@28"
985
+ },
986
+ "arguments": []
987
+ },
988
+ {
989
+ "$type": "RuleCall",
990
+ "rule": {
991
+ "$ref": "#/rules@36"
992
+ },
993
+ "arguments": []
994
+ }
995
+ ]
996
+ },
997
+ "cardinality": "*"
998
+ },
999
+ {
1000
+ "$type": "RuleCall",
1001
+ "rule": {
1002
+ "$ref": "#/rules@16"
1003
+ },
1004
+ "arguments": []
1005
+ }
1006
+ ]
1007
+ },
1008
+ "definesHiddenTokens": false,
1009
+ "entry": false,
1010
+ "fragment": false,
1011
+ "hiddenTokens": [],
1012
+ "parameters": [],
1013
+ "wildcard": false
1014
+ },
1015
+ {
1016
+ "$type": "ParserRule",
1017
+ "name": "ElementProperty",
1018
+ "definition": {
1019
+ "$type": "Alternatives",
1020
+ "elements": [
1021
+ {
1022
+ "$type": "Group",
1023
+ "elements": [
1024
+ {
1025
+ "$type": "Action",
1026
+ "inferredType": {
1027
+ "$type": "InferredType",
1028
+ "name": "ElementStringProperty"
1029
+ }
1030
+ },
1031
+ {
1032
+ "$type": "Assignment",
1033
+ "feature": "key",
1034
+ "operator": "=",
1035
+ "terminal": {
1036
+ "$type": "Alternatives",
1037
+ "elements": [
1038
+ {
1039
+ "$type": "Keyword",
1040
+ "value": "title"
1041
+ },
1042
+ {
1043
+ "$type": "Keyword",
1044
+ "value": "description"
1045
+ },
1046
+ {
1047
+ "$type": "Keyword",
1048
+ "value": "technology"
1049
+ }
1050
+ ]
1051
+ }
1052
+ },
1053
+ {
1054
+ "$type": "RuleCall",
1055
+ "rule": {
1056
+ "$ref": "#/rules@17"
1057
+ },
1058
+ "arguments": [],
1059
+ "cardinality": "?"
1060
+ },
1061
+ {
1062
+ "$type": "Assignment",
1063
+ "feature": "value",
1064
+ "operator": "=",
1065
+ "terminal": {
1066
+ "$type": "RuleCall",
1067
+ "rule": {
1068
+ "$ref": "#/rules@22"
1069
+ },
1070
+ "arguments": []
1071
+ }
1072
+ }
1073
+ ]
1074
+ },
1075
+ {
1076
+ "$type": "Group",
1077
+ "elements": [
1078
+ {
1079
+ "$type": "Action",
1080
+ "inferredType": {
1081
+ "$type": "InferredType",
1082
+ "name": "ElementStyleProperty"
1083
+ }
1084
+ },
1085
+ {
1086
+ "$type": "Assignment",
1087
+ "feature": "key",
1088
+ "operator": "=",
1089
+ "terminal": {
1090
+ "$type": "Keyword",
1091
+ "value": "style"
1092
+ }
1093
+ },
1094
+ {
1095
+ "$type": "RuleCall",
1096
+ "rule": {
1097
+ "$ref": "#/rules@15"
1098
+ },
1099
+ "arguments": []
1100
+ },
1101
+ {
1102
+ "$type": "Assignment",
1103
+ "feature": "props",
1104
+ "operator": "+=",
1105
+ "terminal": {
1106
+ "$type": "Alternatives",
1107
+ "elements": [
1108
+ {
1109
+ "$type": "RuleCall",
1110
+ "rule": {
1111
+ "$ref": "#/rules@5"
1112
+ },
1113
+ "arguments": []
1114
+ },
1115
+ {
1116
+ "$type": "RuleCall",
1117
+ "rule": {
1118
+ "$ref": "#/rules@6"
1119
+ },
1120
+ "arguments": []
1121
+ }
1122
+ ]
1123
+ },
1124
+ "cardinality": "*"
1125
+ },
1126
+ {
1127
+ "$type": "RuleCall",
1128
+ "rule": {
1129
+ "$ref": "#/rules@16"
1130
+ },
1131
+ "arguments": []
1132
+ }
1133
+ ]
1134
+ }
1135
+ ]
1136
+ },
1137
+ "definesHiddenTokens": false,
1138
+ "entry": false,
1139
+ "fragment": false,
1140
+ "hiddenTokens": [],
1141
+ "parameters": [],
1142
+ "wildcard": false
1143
+ },
1144
+ {
1145
+ "$type": "ParserRule",
1146
+ "name": "ExtendElement",
1147
+ "definition": {
1148
+ "$type": "Group",
1149
+ "elements": [
1150
+ {
1151
+ "$type": "Keyword",
1152
+ "value": "extend"
1153
+ },
1154
+ {
1155
+ "$type": "Assignment",
1156
+ "feature": "element",
1157
+ "operator": "=",
1158
+ "terminal": {
1159
+ "$type": "RuleCall",
1160
+ "rule": {
1161
+ "$ref": "#/rules@33"
1162
+ },
1163
+ "arguments": []
1164
+ }
1165
+ },
1166
+ {
1167
+ "$type": "RuleCall",
1168
+ "rule": {
1169
+ "$ref": "#/rules@15"
1170
+ },
1171
+ "arguments": []
1172
+ },
1173
+ {
1174
+ "$type": "Assignment",
1175
+ "feature": "body",
1176
+ "operator": "=",
1177
+ "terminal": {
1178
+ "$type": "RuleCall",
1179
+ "rule": {
1180
+ "$ref": "#/rules@32"
1181
+ },
1182
+ "arguments": []
1183
+ }
1184
+ },
1185
+ {
1186
+ "$type": "RuleCall",
1187
+ "rule": {
1188
+ "$ref": "#/rules@16"
1189
+ },
1190
+ "arguments": []
1191
+ }
1192
+ ]
1193
+ },
1194
+ "definesHiddenTokens": false,
1195
+ "entry": false,
1196
+ "fragment": false,
1197
+ "hiddenTokens": [],
1198
+ "parameters": [],
1199
+ "wildcard": false
1200
+ },
1201
+ {
1202
+ "$type": "ParserRule",
1203
+ "name": "ExtendElementBody",
1204
+ "definition": {
1205
+ "$type": "Assignment",
1206
+ "feature": "elements",
1207
+ "operator": "+=",
1208
+ "terminal": {
1209
+ "$type": "Alternatives",
1210
+ "elements": [
1211
+ {
1212
+ "$type": "RuleCall",
1213
+ "rule": {
1214
+ "$ref": "#/rules@28"
1215
+ },
1216
+ "arguments": []
1217
+ },
1218
+ {
1219
+ "$type": "RuleCall",
1220
+ "rule": {
1221
+ "$ref": "#/rules@39"
1222
+ },
1223
+ "arguments": []
1224
+ }
1225
+ ]
1226
+ },
1227
+ "cardinality": "*"
1228
+ },
1229
+ "definesHiddenTokens": false,
1230
+ "entry": false,
1231
+ "fragment": false,
1232
+ "hiddenTokens": [],
1233
+ "parameters": [],
1234
+ "wildcard": false
1235
+ },
1236
+ {
1237
+ "$type": "ParserRule",
1238
+ "name": "StrictElementRef",
1239
+ "definition": {
1240
+ "$type": "Group",
1241
+ "elements": [
1242
+ {
1243
+ "$type": "Assignment",
1244
+ "feature": "el",
1245
+ "operator": "=",
1246
+ "terminal": {
1247
+ "$type": "CrossReference",
1248
+ "type": {
1249
+ "$ref": "#/rules@28"
1250
+ },
1251
+ "terminal": {
1252
+ "$type": "RuleCall",
1253
+ "rule": {
1254
+ "$ref": "#/rules@12"
1255
+ },
1256
+ "arguments": []
1257
+ },
1258
+ "deprecatedSyntax": false
1259
+ }
1260
+ },
1261
+ {
1262
+ "$type": "Group",
1263
+ "elements": [
1264
+ {
1265
+ "$type": "RuleCall",
1266
+ "rule": {
1267
+ "$ref": "#/rules@13"
1268
+ },
1269
+ "arguments": []
1270
+ },
1271
+ {
1272
+ "$type": "Assignment",
1273
+ "feature": "next",
1274
+ "operator": "=",
1275
+ "terminal": {
1276
+ "$type": "RuleCall",
1277
+ "rule": {
1278
+ "$ref": "#/rules@33"
1279
+ },
1280
+ "arguments": []
1281
+ }
1282
+ }
1283
+ ],
1284
+ "cardinality": "?"
1285
+ }
1286
+ ]
1287
+ },
1288
+ "definesHiddenTokens": false,
1289
+ "entry": false,
1290
+ "fragment": false,
1291
+ "hiddenTokens": [],
1292
+ "parameters": [],
1293
+ "wildcard": false
1294
+ },
1295
+ {
1296
+ "$type": "ParserRule",
1297
+ "name": "ElementRef",
1298
+ "definition": {
1299
+ "$type": "Group",
1300
+ "elements": [
1301
+ {
1302
+ "$type": "Assignment",
1303
+ "feature": "el",
1304
+ "operator": "=",
1305
+ "terminal": {
1306
+ "$type": "CrossReference",
1307
+ "type": {
1308
+ "$ref": "#/rules@28"
1309
+ },
1310
+ "terminal": {
1311
+ "$type": "RuleCall",
1312
+ "rule": {
1313
+ "$ref": "#/rules@12"
1314
+ },
1315
+ "arguments": []
1316
+ },
1317
+ "deprecatedSyntax": false
1318
+ }
1319
+ },
1320
+ {
1321
+ "$type": "Group",
1322
+ "elements": [
1323
+ {
1324
+ "$type": "RuleCall",
1325
+ "rule": {
1326
+ "$ref": "#/rules@13"
1327
+ },
1328
+ "arguments": []
1329
+ },
1330
+ {
1331
+ "$type": "Assignment",
1332
+ "feature": "next",
1333
+ "operator": "=",
1334
+ "terminal": {
1335
+ "$type": "RuleCall",
1336
+ "rule": {
1337
+ "$ref": "#/rules@34"
1338
+ },
1339
+ "arguments": []
1340
+ }
1341
+ }
1342
+ ],
1343
+ "cardinality": "?"
1344
+ }
1345
+ ]
1346
+ },
1347
+ "definesHiddenTokens": false,
1348
+ "entry": false,
1349
+ "fragment": false,
1350
+ "hiddenTokens": [],
1351
+ "parameters": [],
1352
+ "wildcard": false
1353
+ },
1354
+ {
1355
+ "$type": "ParserRule",
1356
+ "name": "Tags",
1357
+ "definition": {
1358
+ "$type": "Assignment",
1359
+ "feature": "value",
1360
+ "operator": "+=",
1361
+ "terminal": {
1362
+ "$type": "CrossReference",
1363
+ "type": {
1364
+ "$ref": "#/rules@9"
1365
+ },
1366
+ "terminal": {
1367
+ "$type": "RuleCall",
1368
+ "rule": {
1369
+ "$ref": "#/rules@21"
1370
+ },
1371
+ "arguments": []
1372
+ },
1373
+ "deprecatedSyntax": false
1374
+ }
1375
+ },
1376
+ "definesHiddenTokens": false,
1377
+ "entry": false,
1378
+ "fragment": false,
1379
+ "hiddenTokens": [],
1380
+ "parameters": [],
1381
+ "wildcard": false
1382
+ },
1383
+ {
1384
+ "$type": "ParserRule",
1385
+ "name": "Relation",
1386
+ "definition": {
1387
+ "$type": "Alternatives",
1388
+ "elements": [
1389
+ {
1390
+ "$type": "RuleCall",
1391
+ "rule": {
1392
+ "$ref": "#/rules@39"
1393
+ },
1394
+ "arguments": []
1395
+ },
1396
+ {
1397
+ "$type": "RuleCall",
1398
+ "rule": {
1399
+ "$ref": "#/rules@38"
1400
+ },
1401
+ "arguments": []
1402
+ }
1403
+ ]
1404
+ },
1405
+ "definesHiddenTokens": false,
1406
+ "entry": false,
1407
+ "fragment": false,
1408
+ "hiddenTokens": [],
1409
+ "parameters": [],
1410
+ "wildcard": false
1411
+ },
1412
+ {
1413
+ "$type": "ParserRule",
1414
+ "name": "RelationFragment",
1415
+ "fragment": true,
1416
+ "definition": {
1417
+ "$type": "Group",
1418
+ "elements": [
1419
+ {
1420
+ "$type": "Assignment",
1421
+ "feature": "target",
1422
+ "operator": "=",
1423
+ "terminal": {
1424
+ "$type": "RuleCall",
1425
+ "rule": {
1426
+ "$ref": "#/rules@34"
1427
+ },
1428
+ "arguments": []
1429
+ }
1430
+ },
1431
+ {
1432
+ "$type": "Assignment",
1433
+ "feature": "title",
1434
+ "operator": "=",
1435
+ "terminal": {
1436
+ "$type": "RuleCall",
1437
+ "rule": {
1438
+ "$ref": "#/rules@22"
1439
+ },
1440
+ "arguments": []
1441
+ },
1442
+ "cardinality": "?"
1443
+ },
1444
+ {
1445
+ "$type": "Assignment",
1446
+ "feature": "definition",
1447
+ "operator": "=",
1448
+ "terminal": {
1449
+ "$type": "RuleCall",
1450
+ "rule": {
1451
+ "$ref": "#/rules@40"
1452
+ },
1453
+ "arguments": []
1454
+ },
1455
+ "cardinality": "?"
1456
+ }
1457
+ ]
1458
+ },
1459
+ "definesHiddenTokens": false,
1460
+ "entry": false,
1461
+ "hiddenTokens": [],
1462
+ "parameters": [],
1463
+ "wildcard": false
1464
+ },
1465
+ {
1466
+ "$type": "ParserRule",
1467
+ "name": "RelationWithoutSource",
1468
+ "inferredType": {
1469
+ "$type": "InferredType",
1470
+ "name": "Relation"
1471
+ },
1472
+ "definition": {
1473
+ "$type": "Group",
1474
+ "elements": [
1475
+ {
1476
+ "$type": "Alternatives",
1477
+ "elements": [
1478
+ {
1479
+ "$type": "Keyword",
1480
+ "value": "this"
1481
+ },
1482
+ {
1483
+ "$type": "Keyword",
1484
+ "value": "it"
1485
+ }
1486
+ ],
1487
+ "cardinality": "?"
1488
+ },
1489
+ {
1490
+ "$type": "Keyword",
1491
+ "value": "->"
1492
+ },
1493
+ {
1494
+ "$type": "RuleCall",
1495
+ "rule": {
1496
+ "$ref": "#/rules@37"
1497
+ },
1498
+ "arguments": []
1499
+ }
1500
+ ]
1501
+ },
1502
+ "definesHiddenTokens": false,
1503
+ "entry": false,
1504
+ "fragment": false,
1505
+ "hiddenTokens": [],
1506
+ "parameters": [],
1507
+ "wildcard": false
1508
+ },
1509
+ {
1510
+ "$type": "ParserRule",
1511
+ "name": "RelationWithSource",
1512
+ "definition": {
1513
+ "$type": "Group",
1514
+ "elements": [
1515
+ {
1516
+ "$type": "Assignment",
1517
+ "feature": "source",
1518
+ "operator": "=",
1519
+ "terminal": {
1520
+ "$type": "RuleCall",
1521
+ "rule": {
1522
+ "$ref": "#/rules@34"
1523
+ },
1524
+ "arguments": []
1525
+ }
1526
+ },
1527
+ {
1528
+ "$type": "Keyword",
1529
+ "value": "->"
1530
+ },
1531
+ {
1532
+ "$type": "RuleCall",
1533
+ "rule": {
1534
+ "$ref": "#/rules@37"
1535
+ },
1536
+ "arguments": []
1537
+ }
1538
+ ]
1539
+ },
1540
+ "definesHiddenTokens": false,
1541
+ "entry": false,
1542
+ "fragment": false,
1543
+ "hiddenTokens": [],
1544
+ "parameters": [],
1545
+ "wildcard": false
1546
+ },
1547
+ {
1548
+ "$type": "ParserRule",
1549
+ "name": "RelationBody",
1550
+ "definition": {
1551
+ "$type": "Group",
1552
+ "elements": [
1553
+ {
1554
+ "$type": "RuleCall",
1555
+ "rule": {
1556
+ "$ref": "#/rules@15"
1557
+ },
1558
+ "arguments": []
1559
+ },
1560
+ {
1561
+ "$type": "Assignment",
1562
+ "feature": "tags",
1563
+ "operator": "=",
1564
+ "terminal": {
1565
+ "$type": "RuleCall",
1566
+ "rule": {
1567
+ "$ref": "#/rules@35"
1568
+ },
1569
+ "arguments": []
1570
+ },
1571
+ "cardinality": "?"
1572
+ },
1573
+ {
1574
+ "$type": "Assignment",
1575
+ "feature": "props",
1576
+ "operator": "+=",
1577
+ "terminal": {
1578
+ "$type": "RuleCall",
1579
+ "rule": {
1580
+ "$ref": "#/rules@41"
1581
+ },
1582
+ "arguments": []
1583
+ },
1584
+ "cardinality": "*"
1585
+ },
1586
+ {
1587
+ "$type": "RuleCall",
1588
+ "rule": {
1589
+ "$ref": "#/rules@16"
1590
+ },
1591
+ "arguments": []
1592
+ }
1593
+ ]
1594
+ },
1595
+ "definesHiddenTokens": false,
1596
+ "entry": false,
1597
+ "fragment": false,
1598
+ "hiddenTokens": [],
1599
+ "parameters": [],
1600
+ "wildcard": false
1601
+ },
1602
+ {
1603
+ "$type": "ParserRule",
1604
+ "name": "RelationProperty",
1605
+ "definition": {
1606
+ "$type": "Group",
1607
+ "elements": [
1608
+ {
1609
+ "$type": "Assignment",
1610
+ "feature": "key",
1611
+ "operator": "=",
1612
+ "terminal": {
1613
+ "$type": "Keyword",
1614
+ "value": "title"
1615
+ }
1616
+ },
1617
+ {
1618
+ "$type": "RuleCall",
1619
+ "rule": {
1620
+ "$ref": "#/rules@17"
1621
+ },
1622
+ "arguments": [],
1623
+ "cardinality": "?"
1624
+ },
1625
+ {
1626
+ "$type": "Assignment",
1627
+ "feature": "value",
1628
+ "operator": "=",
1629
+ "terminal": {
1630
+ "$type": "RuleCall",
1631
+ "rule": {
1632
+ "$ref": "#/rules@22"
1633
+ },
1634
+ "arguments": []
1635
+ }
1636
+ }
1637
+ ]
1638
+ },
1639
+ "definesHiddenTokens": false,
1640
+ "entry": false,
1641
+ "fragment": false,
1642
+ "hiddenTokens": [],
1643
+ "parameters": [],
1644
+ "wildcard": false
1645
+ },
1646
+ {
1647
+ "$type": "ParserRule",
1648
+ "name": "ModelViews",
1649
+ "definition": {
1650
+ "$type": "Group",
1651
+ "elements": [
1652
+ {
1653
+ "$type": "Assignment",
1654
+ "feature": "name",
1655
+ "operator": "=",
1656
+ "terminal": {
1657
+ "$type": "Keyword",
1658
+ "value": "views"
1659
+ }
1660
+ },
1661
+ {
1662
+ "$type": "RuleCall",
1663
+ "rule": {
1664
+ "$ref": "#/rules@15"
1665
+ },
1666
+ "arguments": []
1667
+ },
1668
+ {
1669
+ "$type": "Assignment",
1670
+ "feature": "views",
1671
+ "operator": "+=",
1672
+ "terminal": {
1673
+ "$type": "RuleCall",
1674
+ "rule": {
1675
+ "$ref": "#/rules@43"
1676
+ },
1677
+ "arguments": []
1678
+ },
1679
+ "cardinality": "*"
1680
+ },
1681
+ {
1682
+ "$type": "RuleCall",
1683
+ "rule": {
1684
+ "$ref": "#/rules@16"
1685
+ },
1686
+ "arguments": []
1687
+ }
1688
+ ]
1689
+ },
1690
+ "definesHiddenTokens": false,
1691
+ "entry": false,
1692
+ "fragment": false,
1693
+ "hiddenTokens": [],
1694
+ "parameters": [],
1695
+ "wildcard": false
1696
+ },
1697
+ {
1698
+ "$type": "ParserRule",
1699
+ "name": "View",
1700
+ "definition": {
1701
+ "$type": "Group",
1702
+ "elements": [
1703
+ {
1704
+ "$type": "Action",
1705
+ "inferredType": {
1706
+ "$type": "InferredType",
1707
+ "name": "ElementView"
1708
+ }
1709
+ },
1710
+ {
1711
+ "$type": "Keyword",
1712
+ "value": "view"
1713
+ },
1714
+ {
1715
+ "$type": "Assignment",
1716
+ "feature": "name",
1717
+ "operator": "=",
1718
+ "terminal": {
1719
+ "$type": "RuleCall",
1720
+ "rule": {
1721
+ "$ref": "#/rules@12"
1722
+ },
1723
+ "arguments": []
1724
+ },
1725
+ "cardinality": "?"
1726
+ },
1727
+ {
1728
+ "$type": "Group",
1729
+ "elements": [
1730
+ {
1731
+ "$type": "Keyword",
1732
+ "value": "of"
1733
+ },
1734
+ {
1735
+ "$type": "Assignment",
1736
+ "feature": "viewOf",
1737
+ "operator": "=",
1738
+ "terminal": {
1739
+ "$type": "RuleCall",
1740
+ "rule": {
1741
+ "$ref": "#/rules@34"
1742
+ },
1743
+ "arguments": []
1744
+ }
1745
+ }
1746
+ ],
1747
+ "cardinality": "?"
1748
+ },
1749
+ {
1750
+ "$type": "RuleCall",
1751
+ "rule": {
1752
+ "$ref": "#/rules@15"
1753
+ },
1754
+ "arguments": []
1755
+ },
1756
+ {
1757
+ "$type": "Assignment",
1758
+ "feature": "properties",
1759
+ "operator": "+=",
1760
+ "terminal": {
1761
+ "$type": "RuleCall",
1762
+ "rule": {
1763
+ "$ref": "#/rules@44"
1764
+ },
1765
+ "arguments": []
1766
+ },
1767
+ "cardinality": "*"
1768
+ },
1769
+ {
1770
+ "$type": "Assignment",
1771
+ "feature": "rules",
1772
+ "operator": "+=",
1773
+ "terminal": {
1774
+ "$type": "RuleCall",
1775
+ "rule": {
1776
+ "$ref": "#/rules@45"
1777
+ },
1778
+ "arguments": []
1779
+ },
1780
+ "cardinality": "*"
1781
+ },
1782
+ {
1783
+ "$type": "RuleCall",
1784
+ "rule": {
1785
+ "$ref": "#/rules@16"
1786
+ },
1787
+ "arguments": []
1788
+ }
1789
+ ]
1790
+ },
1791
+ "definesHiddenTokens": false,
1792
+ "entry": false,
1793
+ "fragment": false,
1794
+ "hiddenTokens": [],
1795
+ "parameters": [],
1796
+ "wildcard": false
1797
+ },
1798
+ {
1799
+ "$type": "ParserRule",
1800
+ "name": "ViewProperty",
1801
+ "definition": {
1802
+ "$type": "Group",
1803
+ "elements": [
1804
+ {
1805
+ "$type": "Assignment",
1806
+ "feature": "key",
1807
+ "operator": "=",
1808
+ "terminal": {
1809
+ "$type": "Alternatives",
1810
+ "elements": [
1811
+ {
1812
+ "$type": "Keyword",
1813
+ "value": "title"
1814
+ },
1815
+ {
1816
+ "$type": "Keyword",
1817
+ "value": "description"
1818
+ }
1819
+ ]
1820
+ }
1821
+ },
1822
+ {
1823
+ "$type": "RuleCall",
1824
+ "rule": {
1825
+ "$ref": "#/rules@17"
1826
+ },
1827
+ "arguments": [],
1828
+ "cardinality": "?"
1829
+ },
1830
+ {
1831
+ "$type": "Assignment",
1832
+ "feature": "value",
1833
+ "operator": "=",
1834
+ "terminal": {
1835
+ "$type": "RuleCall",
1836
+ "rule": {
1837
+ "$ref": "#/rules@22"
1838
+ },
1839
+ "arguments": []
1840
+ }
1841
+ }
1842
+ ]
1843
+ },
1844
+ "definesHiddenTokens": false,
1845
+ "entry": false,
1846
+ "fragment": false,
1847
+ "hiddenTokens": [],
1848
+ "parameters": [],
1849
+ "wildcard": false
1850
+ },
1851
+ {
1852
+ "$type": "ParserRule",
1853
+ "name": "ViewRule",
1854
+ "definition": {
1855
+ "$type": "Alternatives",
1856
+ "elements": [
1857
+ {
1858
+ "$type": "RuleCall",
1859
+ "rule": {
1860
+ "$ref": "#/rules@46"
1861
+ },
1862
+ "arguments": []
1863
+ },
1864
+ {
1865
+ "$type": "RuleCall",
1866
+ "rule": {
1867
+ "$ref": "#/rules@47"
1868
+ },
1869
+ "arguments": []
1870
+ }
1871
+ ]
1872
+ },
1873
+ "definesHiddenTokens": false,
1874
+ "entry": false,
1875
+ "fragment": false,
1876
+ "hiddenTokens": [],
1877
+ "parameters": [],
1878
+ "wildcard": false
1879
+ },
1880
+ {
1881
+ "$type": "ParserRule",
1882
+ "name": "ViewRuleExpression",
1883
+ "definition": {
1884
+ "$type": "Group",
1885
+ "elements": [
1886
+ {
1887
+ "$type": "Alternatives",
1888
+ "elements": [
1889
+ {
1890
+ "$type": "Assignment",
1891
+ "feature": "isInclude",
1892
+ "operator": "?=",
1893
+ "terminal": {
1894
+ "$type": "Keyword",
1895
+ "value": "include"
1896
+ }
1897
+ },
1898
+ {
1899
+ "$type": "Keyword",
1900
+ "value": "exclude"
1901
+ }
1902
+ ]
1903
+ },
1904
+ {
1905
+ "$type": "Assignment",
1906
+ "feature": "expressions",
1907
+ "operator": "+=",
1908
+ "terminal": {
1909
+ "$type": "RuleCall",
1910
+ "rule": {
1911
+ "$ref": "#/rules@48"
1912
+ },
1913
+ "arguments": []
1914
+ }
1915
+ },
1916
+ {
1917
+ "$type": "Group",
1918
+ "elements": [
1919
+ {
1920
+ "$type": "RuleCall",
1921
+ "rule": {
1922
+ "$ref": "#/rules@18"
1923
+ },
1924
+ "arguments": []
1925
+ },
1926
+ {
1927
+ "$type": "Assignment",
1928
+ "feature": "expressions",
1929
+ "operator": "+=",
1930
+ "terminal": {
1931
+ "$type": "RuleCall",
1932
+ "rule": {
1933
+ "$ref": "#/rules@48"
1934
+ },
1935
+ "arguments": []
1936
+ }
1937
+ }
1938
+ ],
1939
+ "cardinality": "*"
1940
+ }
1941
+ ]
1942
+ },
1943
+ "definesHiddenTokens": false,
1944
+ "entry": false,
1945
+ "fragment": false,
1946
+ "hiddenTokens": [],
1947
+ "parameters": [],
1948
+ "wildcard": false
1949
+ },
1950
+ {
1951
+ "$type": "ParserRule",
1952
+ "name": "ViewRuleStyle",
1953
+ "definition": {
1954
+ "$type": "Group",
1955
+ "elements": [
1956
+ {
1957
+ "$type": "Keyword",
1958
+ "value": "style"
1959
+ },
1960
+ {
1961
+ "$type": "Assignment",
1962
+ "feature": "targets",
1963
+ "operator": "+=",
1964
+ "terminal": {
1965
+ "$type": "RuleCall",
1966
+ "rule": {
1967
+ "$ref": "#/rules@49"
1968
+ },
1969
+ "arguments": []
1970
+ }
1971
+ },
1972
+ {
1973
+ "$type": "Group",
1974
+ "elements": [
1975
+ {
1976
+ "$type": "RuleCall",
1977
+ "rule": {
1978
+ "$ref": "#/rules@18"
1979
+ },
1980
+ "arguments": []
1981
+ },
1982
+ {
1983
+ "$type": "Assignment",
1984
+ "feature": "targets",
1985
+ "operator": "+=",
1986
+ "terminal": {
1987
+ "$type": "RuleCall",
1988
+ "rule": {
1989
+ "$ref": "#/rules@49"
1990
+ },
1991
+ "arguments": []
1992
+ }
1993
+ }
1994
+ ],
1995
+ "cardinality": "*"
1996
+ },
1997
+ {
1998
+ "$type": "RuleCall",
1999
+ "rule": {
2000
+ "$ref": "#/rules@15"
2001
+ },
2002
+ "arguments": []
2003
+ },
2004
+ {
2005
+ "$type": "Assignment",
2006
+ "feature": "props",
2007
+ "operator": "+=",
2008
+ "terminal": {
2009
+ "$type": "Alternatives",
2010
+ "elements": [
2011
+ {
2012
+ "$type": "RuleCall",
2013
+ "rule": {
2014
+ "$ref": "#/rules@5"
2015
+ },
2016
+ "arguments": []
2017
+ },
2018
+ {
2019
+ "$type": "RuleCall",
2020
+ "rule": {
2021
+ "$ref": "#/rules@6"
2022
+ },
2023
+ "arguments": []
2024
+ }
2025
+ ]
2026
+ },
2027
+ "cardinality": "*"
2028
+ },
2029
+ {
2030
+ "$type": "RuleCall",
2031
+ "rule": {
2032
+ "$ref": "#/rules@16"
2033
+ },
2034
+ "arguments": []
2035
+ }
2036
+ ]
2037
+ },
2038
+ "definesHiddenTokens": false,
2039
+ "entry": false,
2040
+ "fragment": false,
2041
+ "hiddenTokens": [],
2042
+ "parameters": [],
2043
+ "wildcard": false
2044
+ },
2045
+ {
2046
+ "$type": "ParserRule",
2047
+ "name": "Expression",
2048
+ "definition": {
2049
+ "$type": "Alternatives",
2050
+ "elements": [
2051
+ {
2052
+ "$type": "Group",
2053
+ "elements": [
2054
+ {
2055
+ "$type": "Action",
2056
+ "inferredType": {
2057
+ "$type": "InferredType",
2058
+ "name": "IncomingExpression"
2059
+ }
2060
+ },
2061
+ {
2062
+ "$type": "Keyword",
2063
+ "value": "->"
2064
+ },
2065
+ {
2066
+ "$type": "Assignment",
2067
+ "feature": "target",
2068
+ "operator": "=",
2069
+ "terminal": {
2070
+ "$type": "RuleCall",
2071
+ "rule": {
2072
+ "$ref": "#/rules@49"
2073
+ },
2074
+ "arguments": []
2075
+ }
2076
+ },
2077
+ {
2078
+ "$type": "Group",
2079
+ "elements": [
2080
+ {
2081
+ "$type": "Action",
2082
+ "inferredType": {
2083
+ "$type": "InferredType",
2084
+ "name": "InOutExpression"
2085
+ },
2086
+ "feature": "inout",
2087
+ "operator": "="
2088
+ },
2089
+ {
2090
+ "$type": "Keyword",
2091
+ "value": "->"
2092
+ }
2093
+ ],
2094
+ "cardinality": "?"
2095
+ }
2096
+ ]
2097
+ },
2098
+ {
2099
+ "$type": "Group",
2100
+ "elements": [
2101
+ {
2102
+ "$type": "RuleCall",
2103
+ "rule": {
2104
+ "$ref": "#/rules@49"
2105
+ },
2106
+ "arguments": []
2107
+ },
2108
+ {
2109
+ "$type": "Alternatives",
2110
+ "elements": [
2111
+ {
2112
+ "$type": "Group",
2113
+ "elements": [
2114
+ {
2115
+ "$type": "Action",
2116
+ "inferredType": {
2117
+ "$type": "InferredType",
2118
+ "name": "RelationExpression"
2119
+ },
2120
+ "feature": "source",
2121
+ "operator": "="
2122
+ },
2123
+ {
2124
+ "$type": "Keyword",
2125
+ "value": "->"
2126
+ },
2127
+ {
2128
+ "$type": "Assignment",
2129
+ "feature": "target",
2130
+ "operator": "=",
2131
+ "terminal": {
2132
+ "$type": "RuleCall",
2133
+ "rule": {
2134
+ "$ref": "#/rules@49"
2135
+ },
2136
+ "arguments": []
2137
+ }
2138
+ }
2139
+ ]
2140
+ },
2141
+ {
2142
+ "$type": "Group",
2143
+ "elements": [
2144
+ {
2145
+ "$type": "Action",
2146
+ "inferredType": {
2147
+ "$type": "InferredType",
2148
+ "name": "OutgoingExpression"
2149
+ },
2150
+ "feature": "source",
2151
+ "operator": "="
2152
+ },
2153
+ {
2154
+ "$type": "Keyword",
2155
+ "value": "->"
2156
+ }
2157
+ ]
2158
+ }
2159
+ ],
2160
+ "cardinality": "?"
2161
+ }
2162
+ ]
2163
+ }
2164
+ ]
2165
+ },
2166
+ "definesHiddenTokens": false,
2167
+ "entry": false,
2168
+ "fragment": false,
2169
+ "hiddenTokens": [],
2170
+ "parameters": [],
2171
+ "wildcard": false
2172
+ },
2173
+ {
2174
+ "$type": "ParserRule",
2175
+ "name": "ElementExpression",
2176
+ "definition": {
2177
+ "$type": "Alternatives",
2178
+ "elements": [
2179
+ {
2180
+ "$type": "Group",
2181
+ "elements": [
2182
+ {
2183
+ "$type": "Action",
2184
+ "inferredType": {
2185
+ "$type": "InferredType",
2186
+ "name": "WildcardExpression"
2187
+ }
2188
+ },
2189
+ {
2190
+ "$type": "Assignment",
2191
+ "feature": "isWildcard",
2192
+ "operator": "?=",
2193
+ "terminal": {
2194
+ "$type": "Keyword",
2195
+ "value": "*"
2196
+ }
2197
+ }
2198
+ ]
2199
+ },
2200
+ {
2201
+ "$type": "RuleCall",
2202
+ "rule": {
2203
+ "$ref": "#/rules@50"
2204
+ },
2205
+ "arguments": []
2206
+ }
2207
+ ]
2208
+ },
2209
+ "definesHiddenTokens": false,
2210
+ "entry": false,
2211
+ "fragment": false,
2212
+ "hiddenTokens": [],
2213
+ "parameters": [],
2214
+ "wildcard": false
2215
+ },
2216
+ {
2217
+ "$type": "ParserRule",
2218
+ "name": "ElementRefExpression",
2219
+ "definition": {
2220
+ "$type": "Group",
2221
+ "elements": [
2222
+ {
2223
+ "$type": "Assignment",
2224
+ "feature": "id",
2225
+ "operator": "=",
2226
+ "terminal": {
2227
+ "$type": "RuleCall",
2228
+ "rule": {
2229
+ "$ref": "#/rules@34"
2230
+ },
2231
+ "arguments": []
2232
+ }
2233
+ },
2234
+ {
2235
+ "$type": "Assignment",
2236
+ "feature": "isDescedants",
2237
+ "operator": "?=",
2238
+ "terminal": {
2239
+ "$type": "Keyword",
2240
+ "value": ".*"
2241
+ },
2242
+ "cardinality": "?"
2243
+ }
2244
+ ]
2245
+ },
2246
+ "definesHiddenTokens": false,
2247
+ "entry": false,
2248
+ "fragment": false,
2249
+ "hiddenTokens": [],
2250
+ "parameters": [],
2251
+ "wildcard": false
2252
+ }
2253
+ ],
2254
+ "definesHiddenTokens": false,
2255
+ "hiddenTokens": [],
2256
+ "interfaces": [],
2257
+ "types": [],
2258
+ "usedGrammars": []
2259
+ }`));