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