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