@vituum/vite-plugin-latte 1.1.0 → 1.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 (34) hide show
  1. package/latte/PlaceholderFunction.php +2 -2
  2. package/package.json +1 -1
  3. package/vendor/autoload.php +1 -1
  4. package/vendor/composer/autoload_classmap.php +2 -0
  5. package/vendor/composer/autoload_real.php +4 -4
  6. package/vendor/composer/autoload_static.php +4 -2
  7. package/vendor/composer/installed.json +7 -7
  8. package/vendor/composer/installed.php +5 -5
  9. package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +11 -2
  10. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +1 -1
  11. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +2 -2
  12. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +11 -21
  13. package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +1 -1
  14. package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +2 -2
  15. package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +275 -280
  16. package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +4 -4
  17. package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +10 -2
  18. package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +6 -2
  19. package/vendor/latte/latte/src/Latte/Engine.php +109 -97
  20. package/vendor/latte/latte/src/Latte/Essential/AuxiliaryIterator.php +46 -0
  21. package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +42 -25
  22. package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +76 -72
  23. package/vendor/latte/latte/src/Latte/Essential/Filters.php +95 -37
  24. package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +7 -0
  25. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +36 -0
  26. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +25 -3
  27. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +9 -2
  28. package/vendor/latte/latte/src/Latte/Essential/Passes.php +10 -50
  29. package/vendor/latte/latte/src/Latte/Helpers.php +3 -1
  30. package/vendor/latte/latte/src/Latte/Loader.php +1 -0
  31. package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +1 -2
  32. package/vendor/latte/latte/src/Latte/Runtime/Filters.php +1 -4
  33. package/vendor/latte/latte/src/Latte/Runtime/FunctionExecutor.php +68 -0
  34. package/vendor/latte/latte/src/Latte/Runtime/Template.php +1 -3
@@ -26,10 +26,10 @@ abstract class TagParserData
26
26
  /** Rule number signifying that an unexpected token was encountered */
27
27
  protected const UnexpectedTokenRule = 8191;
28
28
 
29
- protected const Yy2Tblstate = 263;
29
+ protected const Yy2Tblstate = 257;
30
30
 
31
31
  /** Number of non-leaf states */
32
- protected const NumNonLeafStates = 360;
32
+ protected const NumNonLeafStates = 354;
33
33
 
34
34
  /** Map of lexer tokens to internal symbols */
35
35
  protected const TokenToSymbol = [
@@ -56,73 +56,72 @@ abstract class TagParserData
56
56
  * state/symbol pair is self::Action[self::ActionBase[$state] + $symbol]. If self::ActionBase[$state] is 0, the
57
57
  * action is defaulted, i.e. self::ActionDefault[$state] should be used instead. */
58
58
  protected const ActionBase = [
59
- 297, 326, 326, 326, 326, 99, 121, 326, 273, 177, 230, 326, 406, 406, 406, 406, 406, 256, 256, 256,
60
- 256, 296, 296, 295, 298, 402, 403, 404, 405, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
59
+ 297, 326, 326, 326, 326, 99, 121, 326, 273, 177, 230, 326, 406, 406, 406, 406, 406, 219, 219, 219,
60
+ 219, 287, 287, 291, 277, 401, 402, 403, 404, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
61
61
  -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
62
62
  -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
63
63
  -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
64
- -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 145, 214, 235, 416, 432, 427, 436, 462, 463, 460,
65
- 466, 472, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 137, 182, 528, 213,
64
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 133, 198, 214, 416, 432, 427, 436, 459, 460, 458,
65
+ 462, 468, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 137, 182, 528, 213,
66
66
  213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 549, 549, 549,
67
- 437, 362, 204, 412, 38, 110, 110, 513, 513, 513, 513, 513, 447, 447, 447, 447, 81, 81, 81, 81,
68
- 500, 500, 271, 271, 271, 271, 271, 271, 271, 271, 271, 272, 135, 135, 454, 13, 275, 275, 275, 228,
69
- 228, 228, 228, 228, 181, 108, 108, 108, 236, 355, 409, 285, 207, 207, 207, 207, 207, 207, 304, 473,
70
- -21, 132, 132, 205, 167, 167, 132, 378, -13, 122, -34, 208, 332, 221, 143, 158, 2, 411, 259, 277,
71
- 303, 142, 142, 142, 142, 256, 450, 450, 256, 256, 256, 64, 64, 64, 147, 180, 39, 309, 133, 445,
72
- 309, 309, 309, 42, 26, -74, 357, 268, 352, 354, 62, 98, 65, 360, 363, 357, 357, 104, 65, 65,
73
- 291, 290, 312, 134, 76, 312, 294, 294, 109, 35, 374, 369, 375, 351, 344, 451, 240, 253, 292, 288,
74
- 342, 316, 252, 374, 369, 375, 278, 6, 337, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 240,
75
- 468, 36, 317, 376, 385, 17, 397, 398, 453, 300, 455, 299, 305, 331, 306, 469, 341, 24, 240, 470,
76
- 408, 287, 319, 329, 395, 301, 471, 400, 310, 457, 140, 386, 185, 458, 198, 452, 260, 401, 467, 459,
77
- 0, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
78
- -43, -43, -43, -43, -43, -43, -43, -43, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67
+ 437, 362, 204, 412, 38, 110, 110, 513, 513, 513, 513, 513, 447, 81, 81, 81, 81, 500, 500, 271,
68
+ 271, 271, 271, 271, 271, 271, 271, 271, 272, 135, 135, 454, 13, 275, 275, 275, 228, 228, 228, 228,
69
+ 228, 181, 108, 108, 108, 236, 355, 409, 276, 207, 207, 207, 207, 207, 207, 282, 469, -21, 132, 132,
70
+ 205, 167, 167, 132, 378, -13, 122, -34, 208, 332, 221, 143, 158, 2, 405, 259, 262, 299, 142, 219,
71
+ 470, 470, 219, 219, 219, 411, 64, 64, 64, 147, 180, 39, 293, 445, 293, 293, 293, 42, 26, -74,
72
+ 268, 352, 344, 351, 268, 62, 98, 65, 354, 357, 352, 352, 104, 65, 65, 294, 300, 298, 134, 76,
73
+ 298, 290, 290, 109, 35, 363, 360, 369, 342, 341, 304, 234, 253, 284, 281, 337, 252, 363, 360, 369,
74
+ 263, 6, 310, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 234, 452, 36, 288, 374, 375, 17,
75
+ 395, 397, 450, 296, 451, 285, 278, 305, 279, 461, 331, 24, 234, 466, 286, 384, 301, 306, 385, 292,
76
+ 467, 398, 280, 453, 140, 376, 165, 455, 185, 408, 260, 400, 465, 457, 0, -43, -43, -43, -43, -43,
77
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
78
+ -43, -43, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79
79
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80
80
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81
81
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82
+ 0, 0, 0, 0, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0,
82
83
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
83
- 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 52,
84
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
85
- 52, 52, 52, 0, 447, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 108, 108, 108, 108,
86
- -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 108, -22, -22, -22, -22, -22, -22, -22, -22,
87
- -22, -22, -22, -22, 0, 0, 0, 0, 0, 0, 0, 378, 294, 294, 294, 294, 294, 294, 378, 378,
88
- 0, 0, 0, 0, 108, 108, 0, 0, 378, 294, 0, 0, 0, 0, 0, 0, 0, 256, 256, 256,
89
- 378, 0, 0, 0, 0, 0, 294, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 0, 36,
90
- 299, 299, 299,
84
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 447, 52,
85
+ 52, 52, 52, 52, 52, 52, 0, 108, 108, 108, 108, -22, -22, -22, -22, -22, -22, -22, -22, -22,
86
+ -22, -22, 108, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, 0, 0, 0, 0, 0,
87
+ 0, 0, 378, 290, 290, 290, 290, 290, 290, 378, 378, 0, 0, 0, 0, 108, 108, 0, 0, 378,
88
+ 290, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 378, 0, 0, 290, 290, 0, 0, 0, 268,
89
+ 0, 0, 0, 0, 0, 0, 285, 36, 285, 285, 285,
91
90
  ];
92
91
 
93
92
  /** Table of actions. Indexed according to self::ActionBase comment. */
94
93
  protected const Action = [
95
- 35, 36, -268, 33, -268, 37, -50, 38, 182, 183, 39, 40, 41, 42, 43, 44, 45, -48, 1, 196,
96
- 46, 562, 563, 208, -47, 544, 387, -221, 16, 560, 290, 527, 248, 249, 199, 0, 291, 292, 7, -47,
97
- -219, 293, 294, 211, 542, 181, 544, -221, -221, -221, 546, 545, 568, 566, 567, 55, 56, 57, -8190, 30,
98
- -219, -219, -219, 422, 11, 227, 295, 15, 200, -219, 201, 546, 545, 24, 571, 58, 59, 60, 22, 61,
94
+ 35, 36, -269, 33, -269, 37, -50, 38, 179, 180, 39, 40, 41, 42, 43, 44, 45, -48, 1, 193,
95
+ 46, 557, 558, 205, -47, 539, 381, -222, 16, 555, 285, 522, 242, 243, 196, 0, 286, 287, 7, -47,
96
+ -220, 288, 289, 208, 537, 178, 539, -222, -222, -222, 541, 540, 563, 561, 562, 55, 56, 57, -8190, 30,
97
+ -220, -220, -220, 416, 11, 224, 290, 15, 197, -220, 198, 541, 540, 24, 566, 58, 59, 60, 22, 61,
99
98
  62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
100
- 102, 198, 368, 369, 367, -268, 194, 387, 424, -268, 423, 237, 82, -8190, -8190, -8190, -8191, -8191, -8191, -8191,
101
- 73, 74, 75, 76, 368, 369, 367, 366, 365, 451, 385, -8190, 386, -8190, -8190, -8190, 389, -8190, -8190, -8190,
102
- -8190, 378, 99, -78, 12, -78, 106, 295, 372, 366, 365, 77, 78, 79, 80, 81, 199, 198, -266, 175,
103
- -266, 197, 47, 378, 13, 204, 345, 302, 82, -78, 372, 174, 303, 374, 238, 239, 373, 379, 304, 305,
104
- 368, 369, 367, 197, 47, -8190, -8190, 204, 646, 302, 25, 107, 647, -216, 303, 374, 238, 239, 373, 379,
105
- 304, 305, 433, -22, 108, 366, 365, -8190, -8190, -8190, -8190, -8190, 26, -216, -216, -216, -8190, -8190, -8190, 378,
106
- 18, -264, -216, -264, 433, -8190, 372, -8190, -8190, -8190, 424, -8190, 423, 368, 369, 367, 510, -183, -52, 197,
107
- 47, 20, -222, 204, 14, 302, -78, 96, 210, -183, 303, 374, 238, 239, 373, 379, 304, 305, 366, 365,
108
- 97, -266, -222, -222, -222, -266, 32, 109, 27, 31, -182, -182, 378, 385, -23, 386, 368, 369, 367, 372,
109
- 433, -17, -182, -182, 366, 365, 215, 216, 217, 212, 213, 214, 197, 47, 172, 247, 204, -222, 302, -16,
110
- 19, 366, 365, 303, 374, 238, 239, 373, 379, 304, 305, 100, 74, 75, 76, 378, 295, -222, -222, -222,
111
- 98, 28, 372, 424, -264, 423, -182, 105, -264, 368, 369, 367, 1, 433, 195, 197, 47, 255, -182, 204,
112
- 387, 302, 173, 560, 387, 202, 303, 374, 238, 239, 373, 379, 304, 305, 366, 365, 294, 203, 198, 82,
113
- -8190, 103, 328, 387, 101, -8190, -8190, -8190, 378, 351, 283, 648, 572, 50, -8190, 372, 433, 51, -191, 227,
114
- 295, 397, 164, -8190, 295, -8190, -8190, -8190, 197, 47, 280, 573, 204, 229, 302, 34, 267, 3, 180, 303,
115
- 374, 238, 239, 373, 379, 304, 305, 246, -251, 368, 369, 367, -250, 251, 252, 253, -218, 48, 49, 17,
116
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, -249, 366, 365, -218, -218, -218, -225,
117
- -8190, -8190, -8190, -224, -223, -218, 2, 387, 378, 635, 368, 369, 367, 4, 5, 372, 6, -225, -8190, 8,
118
- -8190, -8190, 9, 473, 475, 10, 23, 186, 197, 47, -217, 29, 204, -216, 302, 199, 52, 53, 192, 303,
119
- 374, 238, 239, 373, 379, 304, 305, 193, 245, 378, -217, -217, -217, -216, -216, -216, 372, 101, 282, -217,
120
- 515, 558, -216, 434, 530, 536, 538, 540, 590, 371, 370, -224, 21, 382, -29, 383, -8190, -8190, -8190, 336,
121
- 375, 374, 377, 376, 373, 379, 380, 381, 366, 365, 340, -8190, -8190, -8190, -8190, 549, -8190, -8190, -8190, 516,
122
- -8190, -8190, -8190, -8191, -8191, -8191, -8191, -8191, 615, 424, 104, 423, -8190, -8190, -8190, 54, 265, -29, 643, 295,
123
- 645, 1, 398, 644, 526, 348, 255, 642, 599, 387, -8190, 613, 560, 359, 0, 557, 587, 603, 638, 353,
124
- 0, 561, 0, 0, 293, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125
- 0, 0, 50, 0, 0, 0, 0, 0, 227, 295,
99
+ 102, 195, 362, 363, 361, -269, 191, 381, 418, -269, 417, 234, 82, -8190, -8190, -8190, -8191, -8191, -8191, -8191,
100
+ 73, 74, 75, 76, 362, 363, 361, 360, 359, 446, 379, -8190, 380, -8190, -8190, -8190, 383, -8190, -8190, -8190,
101
+ -8190, 372, 99, -78, 12, -78, 106, 290, 366, 360, 359, 77, 78, 79, 80, 81, 196, 195, -267, 172,
102
+ -267, 194, 47, 372, 13, 201, 339, 296, 82, -78, 366, 107, 297, 368, 235, 236, 367, 373, 298, 299,
103
+ 362, 363, 361, 194, 47, -8190, -8190, 201, 641, 296, 25, 108, 642, -217, 297, 368, 235, 236, 367, 373,
104
+ 298, 299, 427, -22, 18, 360, 359, -8190, -8190, -8190, -8190, -8190, 26, -217, -217, -217, -8190, -8190, -8190, 372,
105
+ 20, -265, -217, -265, 427, -8190, 366, -8190, -8190, -8190, 418, -8190, 417, 362, 363, 361, 207, -184, -52, 194,
106
+ 47, 96, -223, 201, 14, 296, -78, 360, 359, -184, 297, 368, 235, 236, 367, 373, 298, 299, 360, 359,
107
+ 97, -267, -223, -223, -223, -267, 32, 109, 27, 31, -183, -183, 372, 379, -23, 380, 362, 363, 361, 366,
108
+ 427, -17, -183, -183, -16, 19, 212, 213, 214, 209, 210, 211, 194, 47, 172, 241, 201, -223, 296, 98,
109
+ 105, 360, 359, 297, 368, 235, 236, 367, 373, 298, 299, 100, 74, 75, 76, 372, 290, -223, -223, -223,
110
+ 192, 28, 366, 418, -265, 417, -183, 199, -265, 362, 363, 361, 1, 427, 200, 194, 47, 250, -183, 201,
111
+ 381, 296, 195, 555, 381, 82, 297, 368, 235, 236, 367, 373, 298, 299, 360, 359, 289, 103, 322, 381,
112
+ -8190, 278, 643, 567, 101, -8190, -8190, -8190, 372, 568, -8190, -192, 345, 50, 164, 366, 427, 51, 240, 224,
113
+ 290, -252, -251, -8190, 290, -8190, -8190, -8190, 194, 47, 21, 391, 201, 226, 296, 34, 260, 3, 177, 297,
114
+ 368, 235, 236, 367, 373, 298, 299, -250, 54, 362, 363, 361, -226, 246, 247, 248, -219, 48, 49, 17,
115
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, -225, 360, 359, -219, -219, -219, -224,
116
+ -8190, -8190, -8190, 2, 4, -219, 5, 381, 372, 630, 362, 363, 361, 6, 8, 366, 9, -226, -8190, 10,
117
+ -8190, -8190, 29, 468, 470, 52, 23, 183, 194, 47, -218, 53, 201, -217, 296, 196, 189, 190, 239, 297,
118
+ 368, 235, 236, 367, 373, 298, 299, 275, 277, 372, -218, -218, -218, -217, -217, -217, 366, 101, 510, -218,
119
+ 553, 428, -217, 525, 531, 533, 535, 585, -29, 365, 364, -225, 259, 376, 505, 377, -8190, -8190, -8190, 330,
120
+ 369, 368, 371, 370, 367, 373, 374, 375, 360, 359, 334, -8190, -8190, -8190, -8190, 544, -8190, -8190, -8190, 511,
121
+ -8190, -8190, -8190, -8191, -8191, -8191, -8191, -8191, 610, 418, 104, 417, -8190, -8190, -8190, 638, 640, -29, 392, 552,
122
+ 639, 1, 521, 342, 637, 594, 250, 608, 582, 381, -8190, 353, 555, 598, 633, 347, 0, 556, 0, 290,
123
+ 0, 0, 0, 0, 288, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124
+ 0, 0, 50, 0, 0, 0, 0, 0, 224, 290,
126
125
  ];
127
126
 
128
127
  /** Table indexed analogously to self::Action. If self::ActionCheck[self::ActionBase[$state] + $symbol] != $symbol
@@ -136,121 +135,121 @@ abstract class TagParserData
136
135
  2, 49, 3, 4, 5, 103, 2, 69, 95, 107, 97, 2, 60, 3, 4, 5, 35, 36, 37, 38,
137
136
  39, 40, 41, 42, 3, 4, 5, 28, 29, 103, 66, 21, 68, 23, 24, 25, 2, 27, 28, 29,
138
137
  3, 42, 104, 0, 2, 2, 6, 109, 49, 28, 29, 43, 44, 45, 46, 47, 21, 49, 0, 26,
139
- 2, 62, 63, 42, 22, 66, 44, 68, 60, 26, 49, 26, 73, 74, 75, 76, 77, 78, 79, 80,
138
+ 2, 62, 63, 42, 22, 66, 44, 68, 60, 26, 49, 6, 73, 74, 75, 76, 77, 78, 79, 80,
140
139
  3, 4, 5, 62, 63, 3, 4, 66, 66, 68, 91, 6, 70, 61, 73, 74, 75, 76, 77, 78,
141
140
  79, 80, 103, 22, 6, 28, 29, 3, 4, 5, 43, 44, 91, 81, 82, 83, 3, 4, 5, 42,
142
141
  6, 0, 90, 2, 103, 21, 49, 23, 24, 25, 95, 27, 97, 3, 4, 5, 103, 90, 103, 62,
143
- 63, 6, 61, 66, 102, 68, 103, 7, 103, 102, 73, 74, 75, 76, 77, 78, 79, 80, 28, 29,
142
+ 63, 7, 61, 66, 102, 68, 103, 28, 29, 102, 73, 74, 75, 76, 77, 78, 79, 80, 28, 29,
144
143
  7, 103, 81, 82, 83, 107, 61, 7, 91, 61, 90, 90, 42, 66, 22, 68, 3, 4, 5, 49,
145
- 103, 22, 102, 102, 28, 29, 81, 82, 83, 81, 82, 83, 62, 63, 26, 90, 66, 61, 68, 22,
144
+ 103, 22, 102, 102, 22, 22, 81, 82, 83, 81, 82, 83, 62, 63, 26, 90, 66, 61, 68, 22,
146
145
  22, 28, 29, 73, 74, 75, 76, 77, 78, 79, 80, 104, 40, 41, 42, 42, 109, 81, 82, 83,
147
- 22, 91, 49, 95, 103, 97, 90, 22, 107, 3, 4, 5, 61, 103, 22, 62, 63, 66, 102, 66,
148
- 69, 68, 26, 72, 69, 26, 73, 74, 75, 76, 77, 78, 79, 80, 28, 29, 85, 28, 49, 60,
149
- 85, 61, 67, 69, 91, 3, 4, 5, 42, 78, 74, 70, 87, 102, 71, 49, 103, 102, 90, 108,
150
- 109, 91, 90, 21, 109, 23, 24, 25, 62, 63, 103, 87, 66, 61, 68, 98, 99, 100, 101, 73,
151
- 74, 75, 76, 77, 78, 79, 80, 90, 102, 3, 4, 5, 102, 81, 82, 83, 61, 91, 92, 7,
146
+ 22, 91, 49, 95, 103, 97, 90, 26, 107, 3, 4, 5, 61, 103, 28, 62, 63, 66, 102, 66,
147
+ 69, 68, 49, 72, 69, 60, 73, 74, 75, 76, 77, 78, 79, 80, 28, 29, 85, 61, 67, 69,
148
+ 85, 74, 70, 87, 91, 3, 4, 5, 42, 87, 71, 90, 78, 102, 90, 49, 103, 102, 90, 108,
149
+ 109, 102, 102, 21, 109, 23, 24, 25, 62, 63, 104, 91, 66, 61, 68, 98, 99, 100, 101, 73,
150
+ 74, 75, 76, 77, 78, 79, 80, 102, 104, 3, 4, 5, 102, 81, 82, 83, 61, 91, 92, 7,
152
151
  8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 102, 28, 29, 81, 82, 83, 102,
153
152
  3, 4, 5, 102, 102, 90, 102, 69, 42, 71, 3, 4, 5, 102, 102, 49, 102, 102, 21, 102,
154
153
  23, 24, 102, 51, 52, 102, 88, 89, 62, 63, 61, 102, 66, 61, 68, 21, 102, 102, 102, 73,
155
- 74, 75, 76, 77, 78, 79, 80, 102, 102, 42, 81, 82, 83, 81, 82, 83, 49, 91, 103, 90,
154
+ 74, 75, 76, 77, 78, 79, 80, 103, 103, 42, 81, 82, 83, 81, 82, 83, 49, 91, 103, 90,
156
155
  103, 103, 90, 103, 103, 103, 103, 103, 103, 62, 63, 102, 104, 66, 103, 68, 3, 4, 5, 103,
157
156
  73, 74, 75, 76, 77, 78, 79, 80, 28, 29, 103, 3, 4, 5, 21, 103, 23, 24, 25, 103,
158
- 27, 28, 29, 30, 31, 32, 33, 34, 103, 95, 22, 97, 3, 4, 5, 104, 104, 103, 105, 109,
159
- 105, 61, 105, 105, 105, 105, 66, 105, 105, 69, 21, 105, 72, 106, -1, 107, 107, 107, 107, 107,
160
- -1, 108, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
157
+ 27, 28, 29, 30, 31, 32, 33, 34, 103, 95, 22, 97, 3, 4, 5, 105, 105, 103, 105, 107,
158
+ 105, 61, 105, 105, 105, 105, 66, 105, 107, 69, 21, 106, 72, 107, 107, 107, -1, 108, -1, 109,
159
+ -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
161
160
  -1, -1, 102, -1, -1, -1, -1, -1, 108, 109,
162
161
  ];
163
162
 
164
163
  /** Map of states to their default action */
165
164
  protected const ActionDefault = [
166
- 8191, 262, 262, 31, 262, 8191, 8191, 262, 8191, 8191, 8191, 29, 8191, 8191, 8191, 29, 8191, 8191, 8191, 8191,
167
- 8191, 39, 29, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 214, 214, 214, 8191, 8191, 8191, 8191, 8191, 8191,
165
+ 8191, 263, 263, 31, 263, 8191, 8191, 263, 8191, 8191, 8191, 29, 8191, 8191, 8191, 29, 8191, 8191, 8191, 8191,
166
+ 8191, 39, 29, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 215, 215, 215, 8191, 8191, 8191, 8191, 8191, 8191,
168
167
  8191, 8191, 8191, 8191, 8191, 8191, 8191, 10, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
169
168
  8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
170
169
  8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
171
- 8191, 8191, 29, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 263, 263, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
172
- 8191, 8191, 1, 269, 270, 83, 77, 215, 265, 267, 79, 82, 80, 43, 44, 56, 119, 121, 153, 120,
173
- 95, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 93, 94, 165, 154, 152, 151,
174
- 117, 118, 124, 92, 8191, 122, 123, 141, 142, 139, 140, 143, 8191, 8191, 8191, 8191, 144, 145, 146, 147,
175
- 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 125, 69, 69, 69, 8191, 8191, 11, 8191, 8191,
176
- 8191, 8191, 8191, 8191, 205, 131, 132, 134, 205, 204, 149, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
177
- 210, 114, 116, 188, 126, 127, 96, 8191, 8191, 8191, 209, 8191, 277, 216, 216, 216, 216, 34, 34, 34,
178
- 8191, 88, 88, 88, 88, 34, 8191, 8191, 34, 34, 34, 8191, 8191, 8191, 194, 222, 216, 137, 8191, 8191,
179
- 128, 129, 130, 57, 8191, 8191, 192, 8191, 181, 8191, 28, 28, 28, 8191, 235, 236, 237, 28, 28, 28,
180
- 169, 36, 71, 28, 28, 71, 8191, 8191, 28, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 199, 8191, 220,
181
- 233, 2, 184, 15, 20, 21, 8191, 199, 218, 135, 136, 138, 157, 158, 159, 160, 161, 162, 163, 260,
182
- 8191, 256, 187, 8191, 8191, 216, 8191, 8191, 276, 8191, 216, 133, 8191, 195, 240, 8191, 217, 216, 261, 8191,
183
- 8191, 8191, 59, 60, 8191, 8191, 8191, 8191, 196, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 55, 8191, 8191, 8191,
170
+ 8191, 8191, 29, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 264, 264, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
171
+ 8191, 8191, 1, 270, 271, 83, 77, 216, 266, 268, 79, 82, 80, 43, 44, 56, 120, 122, 154, 121,
172
+ 96, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 94, 95, 166, 155, 153, 152,
173
+ 118, 119, 125, 93, 8191, 123, 124, 142, 143, 140, 141, 144, 8191, 145, 146, 147, 148, 8191, 8191, 8191,
174
+ 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 126, 69, 69, 69, 8191, 8191, 11, 8191, 8191, 8191, 8191, 8191,
175
+ 8191, 206, 132, 133, 135, 206, 205, 150, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 211, 115, 117,
176
+ 189, 127, 128, 97, 8191, 8191, 8191, 210, 8191, 278, 217, 217, 217, 217, 34, 34, 34, 8191, 89, 34,
177
+ 8191, 8191, 34, 34, 34, 8191, 8191, 8191, 8191, 195, 223, 217, 138, 8191, 129, 130, 131, 57, 8191, 8191,
178
+ 8191, 193, 182, 8191, 2, 28, 28, 28, 8191, 236, 237, 238, 28, 28, 28, 170, 36, 71, 28, 28,
179
+ 71, 8191, 8191, 28, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 200, 8191, 221, 234, 185, 15, 20, 21,
180
+ 8191, 200, 219, 136, 137, 139, 158, 159, 160, 161, 162, 163, 164, 261, 8191, 257, 188, 8191, 8191, 217,
181
+ 8191, 8191, 277, 8191, 217, 134, 8191, 196, 241, 8191, 218, 217, 262, 8191, 8191, 8191, 59, 60, 8191, 8191,
182
+ 8191, 8191, 197, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 55, 8191, 8191, 8191,
184
183
  ];
185
184
 
186
185
  /** Map of non-terminals to a displacement into the self::Goto table. The corresponding goto state for this
187
186
  * non-terminal/state pair is self::Goto[self::GotoBase[$nonTerminal] + $state] (unless defaulted) */
188
187
  protected const GotoBase = [
189
- 0, 0, -1, 0, 0, 0, 108, 0, 166, 27, 30, -17, 0, 240, 26, 0, 0, 0, 0, 172,
190
- 213, 65, -2, 243, 17, 60, 0, 62, 0, 77, -79, 0, 0, -63, 1, -261, 104, -11, 0, 0,
191
- -68, 0, 75, 0, 0, 139, 0, 0, 0, 32, 0, 0, 0, 0, -55, -44, 0, 0, 28, 39,
192
- 7, 50, 57, -67, 0, 0, -51, -24, 0, 36, 110, 4, 41, 0, 0,
188
+ 0, 0, -1, 0, 0, 0, 108, 0, 226, -12, 16, -28, 0, 249, -231, 0, 0, 0, 0, 225,
189
+ 219, 71, -13, 255, -2, 64, 0, 67, 0, 69, -76, 0, 0, -60, -6, 1, -5, 171, 0, 0,
190
+ 23, 0, 0, 72, 0, 0, -18, 0, 0, 0, 34, 0, 0, 0, 0, -77, -44, 0, 0, 14,
191
+ 25, 112, 36, 42, -67, 0, 0, -51, 66, 0, -15, 184, 236, 57, 0, 0,
193
192
  ];
194
193
 
195
194
  /** Table of states to goto after reduction. Indexed according to self::GotoBase comment. */
196
195
  protected const Goto = [
197
- 112, 112, 111, 112, 436, 436, 112, 535, 537, 327, 111, 617, 539, 589, 591, 592, 140, 128, 129, 128,
198
- 125, 125, 117, 138, 130, 130, 130, 130, 125, 110, 127, 127, 127, 122, 309, 310, 257, 311, 312, 313,
199
- 314, 315, 316, 317, 318, 459, 459, 123, 124, 113, 114, 115, 116, 118, 136, 137, 139, 157, 160, 161,
200
- 162, 165, 166, 167, 168, 169, 170, 171, 176, 177, 178, 179, 191, 205, 206, 207, 224, 225, 260, 261,
201
- 262, 331, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 119, 120,
202
- 130, 131, 121, 159, 132, 133, 156, 134, 135, 184, 184, 184, 184, 334, 259, 184, 278, 279, 264, 184,
203
- 418, 425, 427, 426, 428, 187, 189, 190, 189, 421, 421, 421, 421, 541, 541, 541, 421, 421, 421, 421,
204
- 421, 322, 322, 322, 228, 602, 602, 602, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543,
205
- 240, 614, 614, 614, 614, 614, 614, 306, 306, 306, 306, 339, 358, 306, 447, 444, 445, 306, 256, 337,
206
- 221, 222, 233, 325, 330, 226, 234, 235, 236, 275, 276, 604, 605, 606, 402, 600, 600, 307, 307, 559,
207
- 559, 559, 559, 559, 559, 559, 559, 559, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, 579,
208
- 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
209
- 308, 232, 326, 392, 319, 319, 406, 319, 232, 232, 319, 393, 633, 344, 441, 347, 414, 232, 232, 649,
210
- 411, 450, 449, 338, 323, 324, 354, 400, 633, 634, 232, 531, 432, 508, 323, 324, 281, 532, 639, 640,
211
- 641, 634, 607, 608, 219, 0, 355, 0, 185, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 534, 0, 0,
213
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, 241, 242,
214
- 243, 244, 0, 0, 0, 395, 395, 395, 0, 0, 0, 0, 0, 395, 0, 0, 395, 395, 395, 0,
196
+ 112, 112, 111, 112, 317, 318, 112, 273, 274, 258, 111, 317, 318, 276, 333, 352, 140, 128, 129, 128,
197
+ 125, 125, 117, 138, 130, 130, 130, 130, 125, 110, 127, 127, 127, 122, 303, 304, 252, 305, 306, 307,
198
+ 308, 309, 310, 311, 312, 454, 454, 123, 124, 113, 114, 115, 116, 118, 136, 137, 139, 157, 160, 161,
199
+ 162, 165, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 188, 202, 203, 204, 221, 222, 254, 255,
200
+ 256, 325, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 119, 120,
201
+ 130, 131, 121, 159, 132, 133, 156, 134, 135, 181, 181, 181, 181, 328, 321, 181, 316, 316, 316, 181,
202
+ 412, 419, 421, 420, 422, 184, 186, 187, 186, 415, 415, 415, 415, 536, 536, 536, 415, 415, 415, 415,
203
+ 415, 225, 597, 597, 597, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 237, 609, 609,
204
+ 609, 609, 609, 609, 251, 331, 218, 219, 230, 319, 324, 223, 231, 232, 233, 301, 301, 554, 554, 554,
205
+ 554, 554, 554, 554, 554, 554, 430, 430, 253, 595, 595, 576, 576, 576, 576, 576, 576, 576, 576, 576,
206
+ 576, 576, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 302, 302, 302, 302, 302, 302, 302,
207
+ 302, 302, 302, 302, 229, 602, 603, 300, 300, 300, 300, 229, 229, 300, 634, 635, 636, 300, 435, 341,
208
+ 229, 229, 644, 612, 405, 445, 444, 396, 320, 400, 348, 394, 386, 229, 338, 526, 313, 313, 408, 313,
209
+ 387, 426, 313, 530, 532, 628, 216, 503, 439, 534, 584, 586, 587, 527, 349, 332, 270, 271, 599, 600,
210
+ 601, 628, 629, 440, 0, 182, 182, 441, 0, 0, 0, 0, 0, 0, 629, 0, 0, 350, 529, 0,
211
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
215
212
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
213
+ 0, 0, 389, 389, 389, 0, 0, 389, 0, 0, 389, 389, 389, 0, 0, 0, 0, 0, 0, 0,
216
214
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
215
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, 0, 0, 0, 238, 0,
217
216
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218
- 0, 0, 0, 409, 409,
217
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403, 403,
219
218
  ];
220
219
 
221
220
  /** Table indexed analogously to self::Goto. If self::GotoCheck[self::GotoBase[$nonTerminal] + $state] != $nonTerminal
222
221
  * then the goto state is defaulted, i.e. self::GotoDefault[$nonTerminal] should be used. */
223
222
  protected const GotoCheck = [
224
- 2, 2, 2, 2, 37, 37, 2, 35, 35, 60, 2, 71, 35, 35, 35, 35, 2, 2, 2, 2,
223
+ 2, 2, 2, 2, 14, 14, 2, 36, 36, 36, 2, 14, 14, 14, 46, 46, 2, 2, 2, 2,
225
224
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
226
225
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
227
226
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
228
227
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
229
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 66, 70, 6, 36, 36, 36, 6,
228
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 67, 61, 6, 55, 55, 55, 6,
230
229
  30, 30, 30, 30, 30, 6, 6, 6, 6, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
231
- 33, 54, 54, 54, 63, 66, 66, 66, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
232
- 63, 66, 66, 66, 66, 66, 66, 8, 8, 8, 8, 45, 45, 8, 40, 40, 40, 8, 22, 22,
233
- 22, 22, 22, 22, 22, 22, 22, 22, 22, 67, 67, 67, 67, 67, 19, 66, 66, 24, 24, 24,
234
- 24, 24, 24, 24, 24, 24, 24, 24, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59,
235
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
236
- 61, 10, 20, 13, 23, 23, 21, 23, 10, 10, 23, 13, 72, 25, 11, 11, 27, 10, 10, 10,
237
- 11, 11, 11, 23, 14, 14, 11, 11, 72, 72, 10, 11, 29, 42, 14, 14, 14, 49, 9, 9,
238
- 9, 72, 69, 69, 62, -1, 34, -1, 6, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
239
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 10, -1, -1,
240
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, 8, 8,
241
- 8, 8, -1, -1, -1, 6, 6, 6, -1, -1, -1, -1, -1, 6, -1, -1, 6, 6, 6, -1,
230
+ 33, 64, 67, 67, 67, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 64, 67, 67,
231
+ 67, 67, 67, 67, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 24, 24, 24, 24,
232
+ 24, 24, 24, 24, 24, 24, 37, 37, 71, 67, 67, 59, 59, 59, 59, 59, 59, 59, 59, 59,
233
+ 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 62, 62, 62, 62, 62, 62, 62,
234
+ 62, 62, 62, 62, 10, 70, 70, 8, 8, 8, 8, 10, 10, 8, 9, 9, 9, 8, 11, 11,
235
+ 10, 10, 10, 72, 11, 11, 11, 19, 20, 21, 11, 11, 13, 10, 25, 11, 23, 23, 27, 23,
236
+ 13, 29, 23, 35, 35, 73, 63, 43, 40, 35, 35, 35, 35, 50, 34, 23, 68, 68, 68, 68,
237
+ 68, 73, 73, 40, -1, 6, 6, 40, -1, -1, -1, -1, -1, -1, 73, -1, -1, 10, 10, -1,
242
238
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
243
239
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
240
+ -1, -1, 6, 6, 6, -1, -1, 6, -1, -1, 6, 6, 6, -1, -1, -1, -1, -1, -1, -1,
244
241
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
245
- -1, -1, -1, 23, 23,
242
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, 8, -1,
243
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
244
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, 23,
246
245
  ];
247
246
 
248
247
  /** Map of non-terminals to the default state to goto after their reduction */
249
248
  protected const GotoDefault = [
250
- -8192, 289, 126, 301, 363, 364, 188, 384, 332, 612, 598, 390, 270, 619, 287, 286, 458, 349, 284, 401,
251
- 350, 405, 163, 296, 297, 341, 277, 413, 250, 430, 263, 342, 343, 268, 352, 553, 272, 435, 271, 258,
252
- 446, 457, 266, 524, 285, 335, 528, 357, 288, 533, 588, 269, 298, 273, 550, 254, 223, 299, 230, 220,
253
- 320, 209, 218, 632, 231, 300, 586, 274, 594, 601, 321, 618, 631, 329, 346,
249
+ -8192, 284, 126, 264, 357, 358, 185, 378, 326, 607, 593, 384, 265, 614, 282, 281, 453, 343, 279, 395,
250
+ 344, 399, 163, 291, 292, 335, 272, 407, 244, 424, 257, 336, 337, 262, 346, 548, 267, 429, 266, 245,
251
+ 438, 442, 452, 261, 519, 280, 329, 523, 351, 283, 528, 583, 263, 293, 268, 545, 249, 220, 294, 227,
252
+ 217, 314, 206, 215, 627, 228, 295, 581, 269, 589, 596, 315, 613, 626, 323, 340,
254
253
  ];
255
254
 
256
255
  /** Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for
@@ -260,17 +259,17 @@ abstract class TagParserData
260
259
  7, 7, 8, 8, 8, 9, 9, 10, 11, 11, 4, 4, 12, 12, 14, 14, 15, 15, 16, 17,
261
260
  17, 18, 18, 19, 19, 5, 5, 21, 21, 21, 21, 25, 25, 26, 26, 27, 27, 29, 29, 29,
262
261
  29, 30, 30, 30, 30, 31, 31, 32, 32, 28, 28, 34, 34, 35, 35, 36, 36, 37, 37, 37,
263
- 37, 20, 38, 38, 39, 39, 3, 3, 40, 40, 40, 40, 2, 2, 2, 2, 2, 2, 2, 2,
262
+ 37, 20, 38, 38, 39, 39, 3, 3, 40, 41, 41, 41, 41, 2, 2, 2, 2, 2, 2, 2,
264
263
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
265
264
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
266
265
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
267
- 2, 2, 2, 2, 2, 2, 2, 2, 41, 44, 44, 47, 48, 48, 49, 50, 50, 50, 50, 50,
268
- 50, 54, 33, 33, 55, 55, 55, 42, 42, 42, 52, 52, 46, 46, 58, 59, 59, 24, 61, 61,
269
- 61, 61, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 57, 57, 57, 57,
270
- 64, 64, 64, 51, 51, 51, 65, 65, 65, 65, 65, 65, 65, 22, 22, 22, 22, 22, 66, 66,
271
- 69, 68, 56, 56, 56, 56, 56, 56, 56, 53, 53, 53, 67, 67, 67, 23, 60, 70, 70, 71,
272
- 71, 71, 71, 13, 13, 13, 13, 13, 13, 13, 13, 62, 62, 62, 62, 63, 73, 72, 72, 72,
273
- 72, 72, 72, 72, 72, 72, 74, 74, 74, 74,
266
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 45, 45, 48, 49, 49, 50, 51, 51, 51, 51,
267
+ 51, 51, 55, 33, 33, 56, 56, 56, 43, 43, 43, 53, 53, 47, 47, 59, 60, 60, 24, 62,
268
+ 62, 62, 62, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 46, 46, 58, 58, 58,
269
+ 58, 65, 65, 65, 52, 52, 52, 66, 66, 66, 66, 66, 66, 66, 22, 22, 22, 22, 22, 67,
270
+ 67, 70, 69, 57, 57, 57, 57, 57, 57, 57, 54, 54, 54, 68, 68, 68, 23, 61, 71, 71,
271
+ 72, 72, 72, 72, 13, 13, 13, 13, 13, 13, 13, 13, 63, 63, 63, 63, 64, 74, 73, 73,
272
+ 73, 73, 73, 73, 73, 73, 73, 75, 75, 75, 75,
274
273
  ];
275
274
 
276
275
  /** Map of rules to the length of their right-hand side, which is the number of elements that have to
@@ -280,17 +279,17 @@ abstract class TagParserData
280
279
  1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 0, 1, 3, 0, 1, 0, 1, 7, 0,
281
280
  2, 1, 3, 3, 4, 1, 3, 1, 2, 1, 1, 2, 0, 1, 3, 4, 6, 1, 2, 1,
282
281
  1, 1, 1, 1, 1, 3, 3, 3, 3, 0, 1, 0, 2, 2, 4, 1, 3, 1, 2, 2,
283
- 3, 2, 3, 1, 4, 4, 3, 4, 0, 3, 3, 3, 1, 3, 3, 3, 4, 1, 1, 2,
284
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3,
285
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3,
286
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 3, 4, 4, 2, 2, 2,
287
- 2, 2, 2, 2, 1, 8, 12, 9, 3, 0, 4, 2, 1, 3, 2, 2, 4, 2, 4, 4,
288
- 6, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 3, 5, 3, 4, 1,
289
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1, 1,
290
- 1, 1, 1, 1, 3, 1, 1, 4, 1, 4, 6, 4, 4, 1, 1, 3, 3, 3, 1, 4,
291
- 1, 3, 1, 4, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 4, 1, 3, 1, 1,
292
- 1, 3, 0, 1, 2, 3, 4, 3, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4, 3,
293
- 3, 3, 3, 3, 6, 3, 1, 1, 2, 1,
282
+ 3, 2, 3, 1, 2, 2, 1, 2, 3, 0, 3, 3, 3, 1, 3, 3, 3, 4, 1, 1,
283
+ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3,
284
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2,
285
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, 3, 4, 4, 2, 2,
286
+ 2, 2, 2, 2, 2, 1, 8, 12, 9, 3, 0, 4, 2, 1, 3, 2, 2, 4, 2, 4,
287
+ 4, 6, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 3, 5, 3, 4,
288
+ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, 3, 1,
289
+ 1, 1, 1, 1, 1, 3, 1, 1, 4, 1, 4, 6, 4, 4, 1, 1, 3, 3, 3, 1,
290
+ 4, 1, 3, 1, 4, 3, 3, 3, 3, 3, 1, 3, 1, 1, 3, 1, 4, 1, 3, 1,
291
+ 1, 1, 3, 0, 1, 2, 3, 4, 3, 4, 2, 2, 2, 2, 1, 2, 1, 1, 1, 4,
292
+ 3, 3, 3, 3, 3, 6, 3, 1, 1, 2, 1,
294
293
  ];
295
294
 
296
295
  /** Map of symbols to their names */
@@ -423,15 +422,15 @@ abstract class TagParserData
423
422
  protected function reduce(int $rule, int $pos): void
424
423
  {
425
424
  (match ($rule) {
426
- 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 28, 29, 57, 70, 72, 92, 97, 98, 164, 181, 183, 187, 188, 190, 191, 193, 204, 209, 210, 215, 216, 218, 219, 220, 221, 223, 225, 226, 228, 233, 234, 238, 242, 249, 251, 252, 254, 259, 277, 289 => fn() => $this->semValue = $this->semStack[$pos],
425
+ 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 28, 29, 57, 70, 72, 93, 98, 99, 165, 182, 184, 188, 189, 191, 192, 194, 205, 210, 211, 216, 217, 219, 220, 221, 222, 224, 226, 227, 229, 234, 235, 239, 243, 250, 252, 253, 255, 260, 278, 290 => fn() => $this->semValue = $this->semStack[$pos],
427
426
  2 => fn() => $this->semValue = new Node\ModifierNode($this->semStack[$pos], position: $this->startTokenStack[$pos]->position),
428
427
  3 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos], position: $this->startTokenStack[$pos]->position),
429
428
  22, 23, 24, 25, 26, 62, 63, 64 => fn() => $this->semValue = new Node\IdentifierNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
430
429
  27 => fn() => $this->semValue = new Expression\VariableNode(substr($this->semStack[$pos], 1), $this->startTokenStack[$pos]->position),
431
- 30, 40, 51, 81, 89, 90, 91, 149, 150, 170, 171, 189, 217, 224, 250, 253, 285 => fn() => $this->semValue = $this->semStack[$pos - 1],
432
- 31, 39, 52, 73, 88, 169, 192 => fn() => $this->semValue = [],
433
- 32, 41, 53, 75, 83, 172, 258, 273 => fn() => $this->semValue = [$this->semStack[$pos]],
434
- 33, 42, 54, 66, 68, 76, 82, 173, 257 => function () use ($pos) {
430
+ 30, 40, 51, 81, 90, 91, 92, 150, 151, 171, 172, 190, 218, 225, 251, 254, 286 => fn() => $this->semValue = $this->semStack[$pos - 1],
431
+ 31, 39, 52, 73, 89, 170, 193 => fn() => $this->semValue = [],
432
+ 32, 41, 53, 75, 83, 86, 173, 259, 274 => fn() => $this->semValue = [$this->semStack[$pos]],
433
+ 33, 42, 54, 66, 68, 76, 82, 174, 258 => function () use ($pos) {
435
434
  $this->semStack[$pos - 2][] = $this->semStack[$pos];
436
435
  $this->semValue = $this->semStack[$pos - 2];
437
436
  },
@@ -452,133 +451,133 @@ abstract class TagParserData
452
451
  60 => fn() => $this->semValue = new Node\IntersectionTypeNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
453
452
  61 => fn() => $this->semValue = TagParser::handleBuiltinTypes($this->semStack[$pos]),
454
453
  65, 67 => fn() => $this->semValue = [$this->semStack[$pos - 2], $this->semStack[$pos]],
455
- 69, 71, 214 => fn() => $this->semValue = null,
454
+ 69, 71, 215 => fn() => $this->semValue = null,
456
455
  74 => fn() => $this->semValue = $this->semStack[$pos - 2],
457
456
  77 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, false, null, $this->startTokenStack[$pos]->position),
458
457
  78 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], true, false, null, $this->startTokenStack[$pos - 1]->position),
459
458
  79 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, true, null, $this->startTokenStack[$pos - 1]->position),
460
459
  80 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, false, $this->semStack[$pos - 2], $this->startTokenStack[$pos - 2]->position),
461
- 84, 85 => fn() => $this->semValue = new Expression\FilterCallNode($this->semStack[$pos - 3], new Node\FilterNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position), $this->startTokenStack[$pos - 3]->position),
462
- 86 => fn() => $this->semValue = [new Node\FilterNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position)],
463
- 87 => function () use ($pos) {
464
- $this->semStack[$pos - 3][] = new Node\FilterNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position);
465
- $this->semValue = $this->semStack[$pos - 3];
460
+ 84, 85 => fn() => $this->semValue = new Expression\FilterCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
461
+ 87, 272, 273 => function () use ($pos) {
462
+ $this->semStack[$pos - 1][] = $this->semStack[$pos];
463
+ $this->semValue = $this->semStack[$pos - 1];
466
464
  },
467
- 93, 95 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
468
- 94 => fn() => $this->semValue = new Expression\AssignNode($this->convertArrayToList($this->semStack[$pos - 2]), $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
469
- 96 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 3], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
470
- 99 => fn() => $this->semValue = new Expression\CloneNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
471
- 100 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
472
- 101 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
473
- 102 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
474
- 103 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
475
- 104 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
476
- 105 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
477
- 106 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
478
- 107 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '|', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
479
- 108 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
480
- 109 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
481
- 110 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
482
- 111 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
483
- 112 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
484
- 113 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '++', $this->startTokenStack[$pos - 1]->position),
485
- 114 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '++', $this->startTokenStack[$pos - 1]->position),
486
- 115 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '--', $this->startTokenStack[$pos - 1]->position),
487
- 116 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '--', $this->startTokenStack[$pos - 1]->position),
488
- 117 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '||', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
489
- 118 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
490
- 119 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'or', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
491
- 120 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'and', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
492
- 121 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'xor', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
493
- 122, 123 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
494
- 124 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
495
- 125 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
496
- 126 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
497
- 127 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
498
- 128 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
499
- 129 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
500
- 130 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
501
- 131 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
502
- 132 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
503
- 133 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
504
- 134 => fn() => $this->semValue = new Expression\InNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
505
- 135 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '+', $this->startTokenStack[$pos - 1]->position),
506
- 136 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '-', $this->startTokenStack[$pos - 1]->position),
507
- 137 => fn() => $this->semValue = new Expression\NotNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
508
- 138 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '~', $this->startTokenStack[$pos - 1]->position),
509
- 139 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '===', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
510
- 140 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
511
- 141 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
512
- 142 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
513
- 143 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
514
- 144 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
515
- 145 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
516
- 146 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
517
- 147 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
518
- 148 => fn() => $this->semValue = new Expression\InstanceofNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
519
- 151 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 4]->position),
520
- 152 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 3], null, $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
521
- 153 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 2], $this->semStack[$pos], null, $this->startTokenStack[$pos - 2]->position),
522
- 154 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
523
- 155 => fn() => $this->semValue = new Expression\IssetNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
524
- 156 => fn() => $this->semValue = new Expression\EmptyNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
525
- 157 => fn() => $this->semValue = new Expression\CastNode('int', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
526
- 158 => fn() => $this->semValue = new Expression\CastNode('float', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
527
- 159 => fn() => $this->semValue = new Expression\CastNode('string', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
528
- 160 => fn() => $this->semValue = new Expression\CastNode('array', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
529
- 161 => fn() => $this->semValue = new Expression\CastNode('object', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
530
- 162 => fn() => $this->semValue = new Expression\CastNode('bool', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
531
- 163 => fn() => $this->semValue = new Expression\ErrorSuppressNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
532
- 165 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 6], $this->semStack[$pos - 4], [], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 7]->position),
533
- 166 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 10], $this->semStack[$pos - 8], $this->semStack[$pos - 6], $this->semStack[$pos - 5], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 11]->position),
534
- 167 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 7], $this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->semStack[$pos - 2], null, $this->startTokenStack[$pos - 8]->position),
535
- 168 => fn() => $this->semValue = new Expression\NewNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
536
- 174 => fn() => $this->semValue = new Node\ClosureUseNode($this->semStack[$pos], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 1]->position),
537
- 175, 177 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position)),
538
- 176, 178 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallableNode($this->semStack[$pos - 3], $this->startTokenStack[$pos - 3]->position)),
539
- 179 => fn() => $this->semValue = new Expression\StaticMethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
540
- 180 => fn() => $this->semValue = new Expression\StaticMethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
541
- 182, 184, 185 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position),
542
- 186 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindFullyQualified, $this->startTokenStack[$pos]->position),
543
- 194 => fn() => $this->semValue = new Expression\ConstantFetchNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
544
- 195 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
545
- 196 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 4], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 4]->position),
546
- 197 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
547
- 198 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
548
- 199 => function () use ($pos) {
465
+ 88 => fn() => $this->semValue = new Node\FilterNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
466
+ 94, 96 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
467
+ 95 => fn() => $this->semValue = new Expression\AssignNode($this->convertArrayToList($this->semStack[$pos - 2]), $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
468
+ 97 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 3], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
469
+ 100 => fn() => $this->semValue = new Expression\CloneNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
470
+ 101 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
471
+ 102 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
472
+ 103 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
473
+ 104 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
474
+ 105 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
475
+ 106 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
476
+ 107 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
477
+ 108 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '|', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
478
+ 109 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
479
+ 110 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
480
+ 111 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
481
+ 112 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
482
+ 113 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
483
+ 114 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '++', $this->startTokenStack[$pos - 1]->position),
484
+ 115 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '++', $this->startTokenStack[$pos - 1]->position),
485
+ 116 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '--', $this->startTokenStack[$pos - 1]->position),
486
+ 117 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '--', $this->startTokenStack[$pos - 1]->position),
487
+ 118 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '||', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
488
+ 119 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
489
+ 120 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'or', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
490
+ 121 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'and', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
491
+ 122 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'xor', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
492
+ 123, 124 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
493
+ 125 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
494
+ 126 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
495
+ 127 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
496
+ 128 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
497
+ 129 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
498
+ 130 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
499
+ 131 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
500
+ 132 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
501
+ 133 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
502
+ 134 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
503
+ 135 => fn() => $this->semValue = new Expression\InNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
504
+ 136 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '+', $this->startTokenStack[$pos - 1]->position),
505
+ 137 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '-', $this->startTokenStack[$pos - 1]->position),
506
+ 138 => fn() => $this->semValue = new Expression\NotNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
507
+ 139 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '~', $this->startTokenStack[$pos - 1]->position),
508
+ 140 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '===', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
509
+ 141 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
510
+ 142 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
511
+ 143 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
512
+ 144 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
513
+ 145 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
514
+ 146 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
515
+ 147 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
516
+ 148 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
517
+ 149 => fn() => $this->semValue = new Expression\InstanceofNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
518
+ 152 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 4]->position),
519
+ 153 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 3], null, $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
520
+ 154 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 2], $this->semStack[$pos], null, $this->startTokenStack[$pos - 2]->position),
521
+ 155 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
522
+ 156 => fn() => $this->semValue = new Expression\IssetNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
523
+ 157 => fn() => $this->semValue = new Expression\EmptyNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
524
+ 158 => fn() => $this->semValue = new Expression\CastNode('int', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
525
+ 159 => fn() => $this->semValue = new Expression\CastNode('float', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
526
+ 160 => fn() => $this->semValue = new Expression\CastNode('string', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
527
+ 161 => fn() => $this->semValue = new Expression\CastNode('array', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
528
+ 162 => fn() => $this->semValue = new Expression\CastNode('object', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
529
+ 163 => fn() => $this->semValue = new Expression\CastNode('bool', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
530
+ 164 => fn() => $this->semValue = new Expression\ErrorSuppressNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
531
+ 166 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 6], $this->semStack[$pos - 4], [], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 7]->position),
532
+ 167 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 10], $this->semStack[$pos - 8], $this->semStack[$pos - 6], $this->semStack[$pos - 5], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 11]->position),
533
+ 168 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 7], $this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->semStack[$pos - 2], null, $this->startTokenStack[$pos - 8]->position),
534
+ 169 => fn() => $this->semValue = new Expression\NewNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
535
+ 175 => fn() => $this->semValue = new Node\ClosureUseNode($this->semStack[$pos], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 1]->position),
536
+ 176, 178 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position)),
537
+ 177, 179 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallableNode($this->semStack[$pos - 3], $this->startTokenStack[$pos - 3]->position)),
538
+ 180 => fn() => $this->semValue = new Expression\StaticMethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
539
+ 181 => fn() => $this->semValue = new Expression\StaticMethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
540
+ 183, 185, 186 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position),
541
+ 187 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindFullyQualified, $this->startTokenStack[$pos]->position),
542
+ 195 => fn() => $this->semValue = new Expression\ConstantFetchNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
543
+ 196 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
544
+ 197 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 4], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 4]->position),
545
+ 198 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
546
+ 199 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
547
+ 200 => function () use ($pos) {
549
548
  $this->semValue = $this->semStack[$pos];
550
549
  $this->shortArrays->attach($this->semValue);
551
550
  },
552
- 200 => fn() => $this->semValue = Scalar\StringNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
553
- 201 => fn() => $this->semValue = Scalar\InterpolatedStringNode::parse($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
554
- 202 => fn() => $this->semValue = Scalar\IntegerNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
555
- 203 => fn() => $this->semValue = Scalar\FloatNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
556
- 205, 286 => fn() => $this->semValue = new Scalar\StringNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
557
- 206 => fn() => $this->semValue = new Scalar\BooleanNode(true, $this->startTokenStack[$pos]->position),
558
- 207 => fn() => $this->semValue = new Scalar\BooleanNode(false, $this->startTokenStack[$pos]->position),
559
- 208 => fn() => $this->semValue = new Scalar\NullNode($this->startTokenStack[$pos]->position),
560
- 211 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], [$this->semStack[$pos - 1]], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
561
- 212 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 1], [], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position, $this->startTokenStack[$pos]->position),
562
- 213 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
563
- 222 => fn() => $this->semValue = new Expression\ConstantFetchNode(new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position), $this->startTokenStack[$pos]->position),
564
- 227, 243, 278 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
565
- 229 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], false, $this->startTokenStack[$pos - 3]->position),
566
- 230 => fn() => $this->semValue = new Expression\MethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
567
- 231 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
568
- 232 => fn() => $this->semValue = new Expression\MethodCallNode(new Expression\BinaryOpNode($this->semStack[$pos - 3], '??', new Scalar\NullNode($this->startTokenStack[$pos - 3]->position), $this->startTokenStack[$pos - 3]->position), $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
569
- 235, 244, 279 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
570
- 236, 245, 280 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
571
- 237, 246, 281 => fn() => $this->semValue = new Expression\PropertyFetchNode(new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', new Scalar\NullNode($this->startTokenStack[$pos - 2]->position), $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
572
- 239 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
573
- 240 => function () use ($pos) {
551
+ 201 => fn() => $this->semValue = Scalar\StringNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
552
+ 202 => fn() => $this->semValue = Scalar\InterpolatedStringNode::parse($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
553
+ 203 => fn() => $this->semValue = Scalar\IntegerNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
554
+ 204 => fn() => $this->semValue = Scalar\FloatNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
555
+ 206, 287 => fn() => $this->semValue = new Scalar\StringNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
556
+ 207 => fn() => $this->semValue = new Scalar\BooleanNode(true, $this->startTokenStack[$pos]->position),
557
+ 208 => fn() => $this->semValue = new Scalar\BooleanNode(false, $this->startTokenStack[$pos]->position),
558
+ 209 => fn() => $this->semValue = new Scalar\NullNode($this->startTokenStack[$pos]->position),
559
+ 212 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], [$this->semStack[$pos - 1]], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
560
+ 213 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 1], [], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position, $this->startTokenStack[$pos]->position),
561
+ 214 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
562
+ 223 => fn() => $this->semValue = new Expression\ConstantFetchNode(new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position), $this->startTokenStack[$pos]->position),
563
+ 228, 244, 279 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
564
+ 230 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], false, $this->startTokenStack[$pos - 3]->position),
565
+ 231 => fn() => $this->semValue = new Expression\MethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
566
+ 232 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
567
+ 233 => fn() => $this->semValue = new Expression\MethodCallNode(new Expression\BinaryOpNode($this->semStack[$pos - 3], '??', new Scalar\NullNode($this->startTokenStack[$pos - 3]->position), $this->startTokenStack[$pos - 3]->position), $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
568
+ 236, 245, 280 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
569
+ 237, 246, 281 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
570
+ 238, 247, 282 => fn() => $this->semValue = new Expression\PropertyFetchNode(new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', new Scalar\NullNode($this->startTokenStack[$pos - 2]->position), $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
571
+ 240 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
572
+ 241 => function () use ($pos) {
574
573
  $var = $this->semStack[$pos]->name;
575
574
  $this->semValue = \is_string($var)
576
575
  ? new Node\VarLikeIdentifierNode($var, $this->startTokenStack[$pos]->position)
577
576
  : $var;
578
577
  },
579
- 241, 247, 248 => fn() => $this->semValue = new Expression\StaticPropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
580
- 255 => fn() => $this->semValue = $this->convertArrayToList(new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position)),
581
- 256 => function () use ($pos) {
578
+ 242, 248, 249 => fn() => $this->semValue = new Expression\StaticPropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
579
+ 256 => fn() => $this->semValue = $this->convertArrayToList(new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position)),
580
+ 257 => function () use ($pos) {
582
581
  $this->semValue = $this->semStack[$pos];
583
582
  $end = count($this->semValue) - 1;
584
583
  if (
@@ -588,25 +587,21 @@ abstract class TagParserData
588
587
  array_pop($this->semValue);
589
588
  }
590
589
  },
591
- 260 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos]->position), null, false, false, $this->startTokenStack[$pos]->position),
592
- 261 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
593
- 262 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode(null), null, false, false, $this->startTokenStack[$pos]->position),
594
- 263 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, false, $this->startTokenStack[$pos]->position),
595
- 264 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, true, false, $this->startTokenStack[$pos - 1]->position),
596
- 265, 267 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
597
- 266, 268 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 3], true, false, $this->startTokenStack[$pos - 3]->position),
598
- 269, 270 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, true, $this->startTokenStack[$pos - 1]->position),
599
- 271, 272 => function () use ($pos) {
600
- $this->semStack[$pos - 1][] = $this->semStack[$pos];
601
- $this->semValue = $this->semStack[$pos - 1];
602
- },
603
- 274 => fn() => $this->semValue = [$this->semStack[$pos - 1], $this->semStack[$pos]],
604
- 275 => fn() => $this->semValue = new Node\InterpolatedStringPartNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
605
- 276 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
606
- 282, 283 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
607
- 284 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 5]->position),
608
- 287 => fn() => $this->semValue = TagParser::parseOffset($this->semStack[$pos], $this->startTokenStack[$pos]->position),
609
- 288 => fn() => $this->semValue = TagParser::parseOffset('-' . $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
590
+ 261 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos]->position), null, false, false, $this->startTokenStack[$pos]->position),
591
+ 262 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
592
+ 263 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode(null), null, false, false, $this->startTokenStack[$pos]->position),
593
+ 264 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, false, $this->startTokenStack[$pos]->position),
594
+ 265 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, true, false, $this->startTokenStack[$pos - 1]->position),
595
+ 266, 268 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
596
+ 267, 269 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 3], true, false, $this->startTokenStack[$pos - 3]->position),
597
+ 270, 271 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, true, $this->startTokenStack[$pos - 1]->position),
598
+ 275 => fn() => $this->semValue = [$this->semStack[$pos - 1], $this->semStack[$pos]],
599
+ 276 => fn() => $this->semValue = new Node\InterpolatedStringPartNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
600
+ 277 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
601
+ 283, 284 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
602
+ 285 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 5]->position),
603
+ 288 => fn() => $this->semValue = TagParser::parseOffset($this->semStack[$pos], $this->startTokenStack[$pos]->position),
604
+ 289 => fn() => $this->semValue = TagParser::parseOffset('-' . $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
610
605
  })();
611
606
  }
612
607
  }