@vituum/vite-plugin-latte 1.0.0 → 1.2.0

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