@vituum/vite-plugin-latte 0.1.8

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 (201) hide show
  1. package/README.md +39 -0
  2. package/handler.js +9 -0
  3. package/index.js +138 -0
  4. package/index.php +173 -0
  5. package/latte/AssetFilter.php +11 -0
  6. package/latte/FetchFunction.php +28 -0
  7. package/latte/IconFilter.php +14 -0
  8. package/latte/JsonTag.php +64 -0
  9. package/latte/PlaceholderFunction.php +11 -0
  10. package/latte/RandomColorFunction.php +14 -0
  11. package/latte/TelFilter.php +22 -0
  12. package/package.json +35 -0
  13. package/vendor/autoload.php +7 -0
  14. package/vendor/bin/latte-lint +107 -0
  15. package/vendor/composer/ClassLoader.php +572 -0
  16. package/vendor/composer/InstalledVersions.php +350 -0
  17. package/vendor/composer/LICENSE +21 -0
  18. package/vendor/composer/autoload_classmap.php +183 -0
  19. package/vendor/composer/autoload_namespaces.php +9 -0
  20. package/vendor/composer/autoload_psr4.php +9 -0
  21. package/vendor/composer/autoload_real.php +57 -0
  22. package/vendor/composer/autoload_static.php +193 -0
  23. package/vendor/composer/installed.json +93 -0
  24. package/vendor/composer/installed.php +32 -0
  25. package/vendor/composer/platform_check.php +26 -0
  26. package/vendor/latte/latte/bin/latte-lint +29 -0
  27. package/vendor/latte/latte/composer.json +53 -0
  28. package/vendor/latte/latte/license.md +60 -0
  29. package/vendor/latte/latte/ncs.php +14 -0
  30. package/vendor/latte/latte/ncs.xml +9 -0
  31. package/vendor/latte/latte/readme.md +21 -0
  32. package/vendor/latte/latte/src/Bridges/Tracy/BlueScreenPanel.php +114 -0
  33. package/vendor/latte/latte/src/Bridges/Tracy/LattePanel.php +99 -0
  34. package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.panel.phtml +98 -0
  35. package/vendor/latte/latte/src/Bridges/Tracy/templates/LattePanel.tab.phtml +15 -0
  36. package/vendor/latte/latte/src/Latte/Compiler/Block.php +44 -0
  37. package/vendor/latte/latte/src/Latte/Compiler/Escaper.php +244 -0
  38. package/vendor/latte/latte/src/Latte/Compiler/ExpressionBuilder.php +128 -0
  39. package/vendor/latte/latte/src/Latte/Compiler/Node.php +28 -0
  40. package/vendor/latte/latte/src/Latte/Compiler/NodeHelpers.php +132 -0
  41. package/vendor/latte/latte/src/Latte/Compiler/NodeTraverser.php +77 -0
  42. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AreaNode.php +17 -0
  43. package/vendor/latte/latte/src/Latte/Compiler/Nodes/AuxiliaryNode.php +27 -0
  44. package/vendor/latte/latte/src/Latte/Compiler/Nodes/FragmentNode.php +59 -0
  45. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/AttributeNode.php +48 -0
  46. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/BogusTagNode.php +46 -0
  47. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/CommentNode.php +39 -0
  48. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/ElementNode.php +129 -0
  49. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Html/QuotedValue.php +53 -0
  50. package/vendor/latte/latte/src/Latte/Compiler/Nodes/NopNode.php +21 -0
  51. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ArgumentNode.php +45 -0
  52. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ComplexTypeNode.php +17 -0
  53. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayAccessNode.php +41 -0
  54. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayItemNode.php +52 -0
  55. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ArrayNode.php +94 -0
  56. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignNode.php +39 -0
  57. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/AssignOpNode.php +45 -0
  58. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/BinaryOpNode.php +65 -0
  59. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CastNode.php +43 -0
  60. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClassConstantFetchNode.php +42 -0
  61. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/CloneNode.php +36 -0
  62. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureNode.php +73 -0
  63. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ClosureUseNode.php +37 -0
  64. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ConstantFetchNode.php +37 -0
  65. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/EmptyNode.php +36 -0
  66. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/ErrorSuppressNode.php +36 -0
  67. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FilterCallNode.php +39 -0
  68. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallNode.php +45 -0
  69. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/FunctionCallableNode.php +39 -0
  70. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InRangeNode.php +42 -0
  71. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/InstanceofNode.php +40 -0
  72. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/IssetNode.php +40 -0
  73. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MatchNode.php +49 -0
  74. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallNode.php +50 -0
  75. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/MethodCallableNode.php +42 -0
  76. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NewNode.php +45 -0
  77. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/NotNode.php +36 -0
  78. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PostOpNode.php +43 -0
  79. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PreOpNode.php +43 -0
  80. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/PropertyFetchNode.php +42 -0
  81. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallNode.php +55 -0
  82. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticCallableNode.php +47 -0
  83. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/StaticPropertyFetchNode.php +42 -0
  84. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/TernaryNode.php +50 -0
  85. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/UnaryOpNode.php +45 -0
  86. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Expression/VariableNode.php +40 -0
  87. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ExpressionNode.php +17 -0
  88. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/FilterNode.php +67 -0
  89. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IdentifierNode.php +36 -0
  90. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/IntersectionTypeNode.php +39 -0
  91. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/MatchArmNode.php +45 -0
  92. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ModifierNode.php +107 -0
  93. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NameNode.php +89 -0
  94. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/NullableTypeNode.php +35 -0
  95. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ParameterNode.php +54 -0
  96. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/BooleanNode.php +30 -0
  97. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringNode.php +80 -0
  98. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/EncapsedStringPartNode.php +30 -0
  99. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/FloatNode.php +63 -0
  100. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/IntegerNode.php +70 -0
  101. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/NullNode.php +29 -0
  102. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/Scalar/StringNode.php +40 -0
  103. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/ScalarNode.php +15 -0
  104. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/SuperiorTypeNode.php +29 -0
  105. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/UnionTypeNode.php +39 -0
  106. package/vendor/latte/latte/src/Latte/Compiler/Nodes/Php/VarLikeIdentifierNode.php +21 -0
  107. package/vendor/latte/latte/src/Latte/Compiler/Nodes/StatementNode.php +15 -0
  108. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TemplateNode.php +34 -0
  109. package/vendor/latte/latte/src/Latte/Compiler/Nodes/TextNode.php +37 -0
  110. package/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php +227 -0
  111. package/vendor/latte/latte/src/Latte/Compiler/Position.php +43 -0
  112. package/vendor/latte/latte/src/Latte/Compiler/PrintContext.php +334 -0
  113. package/vendor/latte/latte/src/Latte/Compiler/Tag.php +117 -0
  114. package/vendor/latte/latte/src/Latte/Compiler/TagLexer.php +399 -0
  115. package/vendor/latte/latte/src/Latte/Compiler/TagParser.php +388 -0
  116. package/vendor/latte/latte/src/Latte/Compiler/TagParserData.php +580 -0
  117. package/vendor/latte/latte/src/Latte/Compiler/TemplateGenerator.php +206 -0
  118. package/vendor/latte/latte/src/Latte/Compiler/TemplateLexer.php +391 -0
  119. package/vendor/latte/latte/src/Latte/Compiler/TemplateParser.php +448 -0
  120. package/vendor/latte/latte/src/Latte/Compiler/TemplateParserHtml.php +506 -0
  121. package/vendor/latte/latte/src/Latte/Compiler/Token.php +259 -0
  122. package/vendor/latte/latte/src/Latte/Compiler/TokenStream.php +151 -0
  123. package/vendor/latte/latte/src/Latte/ContentType.php +22 -0
  124. package/vendor/latte/latte/src/Latte/Engine.php +591 -0
  125. package/vendor/latte/latte/src/Latte/Essential/Blueprint.php +160 -0
  126. package/vendor/latte/latte/src/Latte/Essential/CachingIterator.php +232 -0
  127. package/vendor/latte/latte/src/Latte/Essential/CoreExtension.php +232 -0
  128. package/vendor/latte/latte/src/Latte/Essential/Filters.php +591 -0
  129. package/vendor/latte/latte/src/Latte/Essential/Nodes/BlockNode.php +161 -0
  130. package/vendor/latte/latte/src/Latte/Essential/Nodes/CaptureNode.php +98 -0
  131. package/vendor/latte/latte/src/Latte/Essential/Nodes/ContentTypeNode.php +74 -0
  132. package/vendor/latte/latte/src/Latte/Essential/Nodes/DebugbreakNode.php +53 -0
  133. package/vendor/latte/latte/src/Latte/Essential/Nodes/DefineNode.php +134 -0
  134. package/vendor/latte/latte/src/Latte/Essential/Nodes/DoNode.php +49 -0
  135. package/vendor/latte/latte/src/Latte/Essential/Nodes/DumpNode.php +58 -0
  136. package/vendor/latte/latte/src/Latte/Essential/Nodes/EmbedNode.php +125 -0
  137. package/vendor/latte/latte/src/Latte/Essential/Nodes/ExtendsNode.php +60 -0
  138. package/vendor/latte/latte/src/Latte/Essential/Nodes/FirstLastSepNode.php +81 -0
  139. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForNode.php +91 -0
  140. package/vendor/latte/latte/src/Latte/Essential/Nodes/ForeachNode.php +155 -0
  141. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfChangedNode.php +141 -0
  142. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfContentNode.php +82 -0
  143. package/vendor/latte/latte/src/Latte/Essential/Nodes/IfNode.php +180 -0
  144. package/vendor/latte/latte/src/Latte/Essential/Nodes/ImportNode.php +49 -0
  145. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeBlockNode.php +140 -0
  146. package/vendor/latte/latte/src/Latte/Essential/Nodes/IncludeFileNode.php +81 -0
  147. package/vendor/latte/latte/src/Latte/Essential/Nodes/IterateWhileNode.php +94 -0
  148. package/vendor/latte/latte/src/Latte/Essential/Nodes/NAttrNode.php +105 -0
  149. package/vendor/latte/latte/src/Latte/Essential/Nodes/NClassNode.php +54 -0
  150. package/vendor/latte/latte/src/Latte/Essential/Nodes/NTagNode.php +79 -0
  151. package/vendor/latte/latte/src/Latte/Essential/Nodes/ParametersNode.php +84 -0
  152. package/vendor/latte/latte/src/Latte/Essential/Nodes/PrintNode.php +70 -0
  153. package/vendor/latte/latte/src/Latte/Essential/Nodes/RawPhpNode.php +46 -0
  154. package/vendor/latte/latte/src/Latte/Essential/Nodes/RollbackNode.php +37 -0
  155. package/vendor/latte/latte/src/Latte/Essential/Nodes/SkipNode.php +71 -0
  156. package/vendor/latte/latte/src/Latte/Essential/Nodes/SpacelessNode.php +62 -0
  157. package/vendor/latte/latte/src/Latte/Essential/Nodes/SwitchNode.php +118 -0
  158. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplatePrintNode.php +39 -0
  159. package/vendor/latte/latte/src/Latte/Essential/Nodes/TemplateTypeNode.php +38 -0
  160. package/vendor/latte/latte/src/Latte/Essential/Nodes/TraceNode.php +35 -0
  161. package/vendor/latte/latte/src/Latte/Essential/Nodes/TranslateNode.php +104 -0
  162. package/vendor/latte/latte/src/Latte/Essential/Nodes/TryNode.php +75 -0
  163. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarNode.php +106 -0
  164. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarPrintNode.php +40 -0
  165. package/vendor/latte/latte/src/Latte/Essential/Nodes/VarTypeNode.php +36 -0
  166. package/vendor/latte/latte/src/Latte/Essential/Nodes/WhileNode.php +81 -0
  167. package/vendor/latte/latte/src/Latte/Essential/Passes.php +115 -0
  168. package/vendor/latte/latte/src/Latte/Essential/RawPhpExtension.php +28 -0
  169. package/vendor/latte/latte/src/Latte/Essential/RollbackException.php +16 -0
  170. package/vendor/latte/latte/src/Latte/Essential/Tracer.php +117 -0
  171. package/vendor/latte/latte/src/Latte/Essential/TranslatorExtension.php +101 -0
  172. package/vendor/latte/latte/src/Latte/Extension.php +97 -0
  173. package/vendor/latte/latte/src/Latte/Helpers.php +96 -0
  174. package/vendor/latte/latte/src/Latte/Loader.php +37 -0
  175. package/vendor/latte/latte/src/Latte/Loaders/FileLoader.php +95 -0
  176. package/vendor/latte/latte/src/Latte/Loaders/StringLoader.php +76 -0
  177. package/vendor/latte/latte/src/Latte/Policy.php +24 -0
  178. package/vendor/latte/latte/src/Latte/PositionAwareException.php +50 -0
  179. package/vendor/latte/latte/src/Latte/Runtime/Block.php +24 -0
  180. package/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php +151 -0
  181. package/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php +39 -0
  182. package/vendor/latte/latte/src/Latte/Runtime/Filters.php +234 -0
  183. package/vendor/latte/latte/src/Latte/Runtime/Html.php +35 -0
  184. package/vendor/latte/latte/src/Latte/Runtime/HtmlStringable.php +17 -0
  185. package/vendor/latte/latte/src/Latte/Runtime/Template.php +381 -0
  186. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallNode.php +30 -0
  187. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/FunctionCallableNode.php +29 -0
  188. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallNode.php +32 -0
  189. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/MethodCallableNode.php +30 -0
  190. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/PropertyFetchNode.php +32 -0
  191. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/SandboxNode.php +73 -0
  192. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallNode.php +31 -0
  193. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticCallableNode.php +30 -0
  194. package/vendor/latte/latte/src/Latte/Sandbox/Nodes/StaticPropertyFetchNode.php +32 -0
  195. package/vendor/latte/latte/src/Latte/Sandbox/RuntimeChecker.php +116 -0
  196. package/vendor/latte/latte/src/Latte/Sandbox/SandboxExtension.php +132 -0
  197. package/vendor/latte/latte/src/Latte/Sandbox/SecurityPolicy.php +185 -0
  198. package/vendor/latte/latte/src/Latte/Strict.php +101 -0
  199. package/vendor/latte/latte/src/Latte/attributes.php +24 -0
  200. package/vendor/latte/latte/src/Latte/exceptions.php +69 -0
  201. package/vendor/latte/latte/src/Tools/Linter.php +175 -0
@@ -0,0 +1,580 @@
1
+ <?php
2
+
3
+ /**
4
+ * This file is part of the Latte (https://latte.nette.org)
5
+ * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace Latte\Compiler;
11
+
12
+ use Latte\Compiler\Nodes\Php as Node;
13
+ use Latte\Compiler\Nodes\Php\Expression;
14
+ use Latte\Compiler\Nodes\Php\Scalar;
15
+
16
+
17
+ /** @internal generated trait used by TagParser */
18
+ abstract class TagParserData
19
+ {
20
+ /** Symbol number of error recovery token */
21
+ protected const ErrorSymbol = 1;
22
+
23
+ /** Action number signifying default action */
24
+ protected const DefaultAction = -8190;
25
+
26
+ /** Rule number signifying that an unexpected token was encountered */
27
+ protected const UnexpectedTokenRule = 8191;
28
+
29
+ protected const Yy2Tblstate = 257;
30
+
31
+ /** Number of non-leaf states */
32
+ protected const NumNonLeafStates = 350;
33
+
34
+ /** Map of lexer tokens to internal symbols */
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, 42, 2, 43, 44, 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,
49
+ 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 28, 29, 30,
50
+ 31, 32, 33, 34, 36, 38, 39, 40, 41, 49, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62,
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,
53
+ ];
54
+
55
+ /** Map of states to a displacement into the self::Action table. The corresponding action for this
56
+ * state/symbol pair is self::Action[self::ActionBase[$state] + $symbol]. If self::ActionBase[$state] is 0, the
57
+ * action is defaulted, i.e. self::ActionDefault[$state] should be used instead. */
58
+ protected const ActionBase = [
59
+ 97, 305, 305, 305, 305, 100, 141, 305, 264, 182, 223, 305, 385, 385, 385, 385, 385, 155, 155, 155,
60
+ 232, 232, 214, 225, 353, 354, 355, 375, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
61
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
62
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
63
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
64
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, 38, 224, 378, 381, 380, 382, 422, 429, 430, 433, 441,
65
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 140, 64, 557, 107, 107, 107,
66
+ 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 274, 274, 274, 371, 504,
67
+ 492, 391, -67, 412, 412, 127, 127, 127, 127, 127, 426, 426, 426, 426, 79, 79, 79, 79, 250, 250,
68
+ 250, 250, 250, 250, 250, 250, 87, 87, 103, 208, -39, -39, -39, 451, 451, 451, 41, 41, 41, 41,
69
+ 41, 111, 152, 193, 449, 203, 446, 446, 446, 446, 446, 446, 230, 444, -21, -11, -11, 388, 303, 303,
70
+ 303, -11, 397, 94, 321, -36, 461, 474, 318, 419, 263, 222, 377, 216, 217, 236, 26, 26, 26, 26,
71
+ 155, 445, 445, 155, 155, 155, 132, 132, 132, -83, 221, 52, 23, 389, 221, 221, 221, 47, 37, 60,
72
+ 285, 220, 271, 276, 33, 104, 61, 292, 311, 285, 285, 145, 61, 61, 234, 240, 244, 169, 99, 244,
73
+ 235, 235, 165, 29, 322, 317, 324, 269, 261, 387, 181, 192, 233, 231, 260, 245, 215, 322, 317, 324,
74
+ 218, 181, 228, 228, 228, 258, 228, 228, 228, 228, 228, 228, 228, 432, 30, 239, 326, 327, 342, 344,
75
+ 211, 226, 394, 228, 227, 255, 252, 434, 181, 259, 435, 384, 320, 254, 213, 336, 212, 439, 348, 407,
76
+ 200, 331, 202, 414, 219, 390, 229, 352, 418, 420, 0, -42, -42, -42, -42, -42, -42, -42, -42, -42,
77
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 0, 0,
78
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80
+ 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, 53,
82
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83
+ 0, 0, 0, 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
84
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 0, 426, 53, 53, 53, 53, 53, 53, 53,
85
+ 0, 0, 0, 0, 303, 303, 303, 303, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
86
+ 303, 303, 303, 41, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 397, 235, 235, 235, 235,
87
+ 235, 235, 397, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 397, 235, 0, 0, 0, 0, 0,
88
+ 0, 0, 155, 155, 155, 397, 0, 0, 0, 0, 0, 235, 235, 0, 0, 0, 0, 0, 0, 0,
89
+ 228, 0, 0, 30, 228, 228, 228,
90
+ ];
91
+
92
+ /** Table of actions. Indexed according to self::ActionBase comment. */
93
+ protected const Action = [
94
+ 34, 35, 376, 75, 76, 77, 36, -176, 37, 178, 179, 38, 39, 40, 41, 42, 43, 44, -176, 1,
95
+ 193, 45, 544, 545, 202, -213, 527, 376, 12, 0, 542, 284, 7, 243, 244, 11, 98, 285, 286, 16,
96
+ -211, 289, 287, 288, 205, -213, -213, -213, 13, 173, -208, 529, 528, 550, 548, 549, 54, 55, 56, 29,
97
+ -211, -211, -211, 15, 172, 222, 289, -8190, -8190, -211, -208, -208, -208, 197, 23, 198, 57, 58, 59, -208,
98
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
99
+ 80, 21, 195, 357, 358, 356, 101, 525, 196, 527, -8190, -8190, -8190, 81, -8191, -8191, -8191, -8191, 72, 73,
100
+ 74, 75, 76, 77, 196, 493, 405, 14, 355, 354, -8190, -8190, -8190, -21, 529, 528, 407, 32, 406, 434,
101
+ 204, 367, -175, -8190, 357, 358, 356, 188, -8190, 361, -8190, -8190, -8190, -175, -8190, -8190, -8190, -8191, -8191, -8191,
102
+ -8191, -8191, 194, 46, 510, -8190, 201, 232, 296, 355, 354, 378, -214, 297, 363, 233, 234, 362, 368, 298,
103
+ 299, 553, 367, 355, 354, 357, 358, 356, 95, -45, 361, 24, -214, -214, -214, 33, 261, 3, 374, 96,
104
+ 375, -175, 416, 194, 46, -28, 105, 201, 106, 296, 355, 354, -175, -214, 297, 363, 233, 234, 362, 368,
105
+ 298, 299, -260, 367, -260, 107, 357, 358, 356, 196, 18, 361, 25, -214, -214, -214, 108, -22, -16, -15,
106
+ 19, 200, -175, 416, 194, 46, 170, 97, 201, 104, 296, 355, 354, -175, -210, 297, 363, 233, 234, 362,
107
+ 368, 298, 299, -257, 367, -257, 189, 357, 358, 356, 195, 171, 361, 26, -210, -210, -210, -8190, -8190, -8190,
108
+ 199, 320, 630, -210, 416, 194, 46, 102, 81, 201, 554, 296, 355, 354, -217, -8190, 297, 363, 233, 234,
109
+ 362, 368, 298, 299, 376, 367, 277, -8190, 357, 358, 356, 1, 341, 361, 27, 625, 251, 555, -254, 376,
110
+ -254, -184, 542, 162, -260, 416, 194, 46, -260, 241, 201, 386, 296, 355, 354, 288, 0, 297, 363, 233,
111
+ 234, 362, 368, 298, 299, -8190, 367, -8190, 78, 79, 80, 49, 195, -243, 361, 100, -241, 222, 289, -217,
112
+ -216, -215, 2, 81, 336, -257, 416, 194, 46, -257, 4, 201, 5, 296, -8190, -8190, -8190, 6, 297, 363,
113
+ 233, 234, 362, 368, 298, 299, 8, 628, 357, 358, 356, 629, -8190, 9, -8190, -8190, 47, 48, 17, 82,
114
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 10, 355, 354, -8190, -8190, -8190, 28, -71,
115
+ -254, -71, 274, 51, -254, 52, 367, 186, 187, 357, 358, 356, 240, -8190, 361, -8190, -8190, -8190, 276, -8190,
116
+ -8190, -8190, 456, 458, 498, -71, 540, 194, 46, 31, 417, 201, -208, 296, 513, 519, 521, 523, 297, 363,
117
+ 233, 234, 362, 368, 298, 299, 376, 367, 617, 209, 210, 211, -208, -208, -208, 361, 100, 572, 242, -28,
118
+ 329, -208, 331, 532, 499, 22, 181, 20, 360, 359, 53, 597, 371, 259, 372, -8190, -8190, -8190, 627, 364,
119
+ 363, 366, 365, 362, 368, 369, 370, -8190, -8190, -8190, -209, 387, 374, -8190, 375, -8190, -8190, -8190, 626, -8190,
120
+ 376, -71, 30, 349, 509, -8190, 624, -8190, -8190, -8190, -209, -209, -209, 581, 592, 224, -8190, 595, 539, -209,
121
+ 569, 585, 206, 207, 208, 620, -8190, 343, -8190, 99, -216, 543, 50, 289, 289, 246, 247, 248, 0, 289,
122
+ -8190, -8190, -8190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
123
+ ];
124
+
125
+ /** Table indexed analogously to self::Action. If self::ActionCheck[self::ActionBase[$state] + $symbol] != $symbol
126
+ * then the action is defaulted, i.e. self::ActionDefault[$state] should be used instead. */
127
+ protected const ActionCheck = [
128
+ 42, 43, 69, 42, 43, 44, 48, 90, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 101, 61,
129
+ 62, 63, 64, 65, 66, 61, 68, 69, 2, 0, 72, 73, 2, 75, 76, 2, 103, 79, 80, 2,
130
+ 61, 108, 84, 85, 86, 81, 82, 83, 22, 26, 61, 93, 94, 95, 96, 97, 3, 4, 5, 101,
131
+ 81, 82, 83, 2, 26, 107, 108, 3, 4, 90, 81, 82, 83, 26, 21, 28, 23, 24, 25, 90,
132
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
133
+ 47, 2, 49, 3, 4, 5, 2, 66, 21, 68, 3, 4, 5, 60, 35, 36, 37, 38, 39, 40,
134
+ 41, 42, 43, 44, 21, 102, 85, 101, 28, 29, 3, 4, 5, 22, 93, 94, 95, 77, 97, 102,
135
+ 102, 41, 90, 3, 3, 4, 5, 2, 21, 49, 23, 24, 25, 101, 27, 28, 29, 30, 31, 32,
136
+ 33, 34, 62, 63, 104, 71, 66, 2, 68, 28, 29, 2, 61, 73, 74, 75, 76, 77, 78, 79,
137
+ 80, 87, 41, 28, 29, 3, 4, 5, 7, 102, 49, 91, 81, 82, 83, 98, 99, 100, 66, 7,
138
+ 68, 90, 102, 62, 63, 102, 6, 66, 6, 68, 28, 29, 101, 61, 73, 74, 75, 76, 77, 78,
139
+ 79, 80, 0, 41, 2, 6, 3, 4, 5, 21, 6, 49, 91, 81, 82, 83, 7, 22, 22, 22,
140
+ 22, 28, 90, 102, 62, 63, 26, 22, 66, 22, 68, 28, 29, 101, 61, 73, 74, 75, 76, 77,
141
+ 78, 79, 80, 0, 41, 2, 22, 3, 4, 5, 49, 26, 49, 91, 81, 82, 83, 3, 4, 5,
142
+ 26, 67, 70, 90, 102, 62, 63, 61, 60, 66, 87, 68, 28, 29, 101, 21, 73, 74, 75, 76,
143
+ 77, 78, 79, 80, 69, 41, 74, 71, 3, 4, 5, 61, 78, 49, 91, 104, 66, 87, 0, 69,
144
+ 2, 90, 72, 90, 102, 102, 62, 63, 106, 90, 66, 91, 68, 28, 29, 85, -1, 73, 74, 75,
145
+ 76, 77, 78, 79, 80, 95, 41, 97, 45, 46, 47, 101, 49, 101, 49, 91, 101, 107, 108, 101,
146
+ 101, 101, 101, 60, 43, 102, 102, 62, 63, 106, 101, 66, 101, 68, 3, 4, 5, 101, 73, 74,
147
+ 75, 76, 77, 78, 79, 80, 101, 66, 3, 4, 5, 70, 21, 101, 23, 24, 91, 92, 7, 8,
148
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 101, 28, 29, 3, 4, 5, 101, 0,
149
+ 102, 2, 102, 101, 106, 101, 41, 101, 101, 3, 4, 5, 101, 21, 49, 23, 24, 25, 102, 27,
150
+ 28, 29, 51, 52, 102, 26, 102, 62, 63, 61, 102, 66, 61, 68, 102, 102, 102, 102, 73, 74,
151
+ 75, 76, 77, 78, 79, 80, 69, 41, 71, 81, 82, 83, 81, 82, 83, 49, 91, 102, 90, 102,
152
+ 102, 90, 102, 102, 102, 88, 89, 103, 62, 63, 103, 102, 66, 103, 68, 3, 4, 5, 104, 73,
153
+ 74, 75, 76, 77, 78, 79, 80, 3, 4, 5, 61, 104, 66, 21, 68, 23, 24, 25, 104, 27,
154
+ 69, 102, 61, 105, 104, 21, 104, 23, 24, 25, 81, 82, 83, 104, 104, 61, 85, 104, 106, 90,
155
+ 106, 106, 81, 82, 83, 106, 95, 106, 97, 103, 101, 107, 101, 108, 108, 81, 82, 83, -1, 108,
156
+ 3, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22,
157
+ ];
158
+
159
+ /** Map of states to their default action */
160
+ 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,
164
+ 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
165
+ 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, 62, 62, 62, 8191, 124, 125, 127, 8191, 10, 8191, 8191, 8191, 8191, 8191,
171
+ 8191, 197, 197, 196, 142, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 202, 107, 109, 181, 119, 120,
172
+ 118, 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,
179
+ ];
180
+
181
+ /** Map of non-terminals to a displacement into the self::Goto table. The corresponding goto state for this
182
+ * non-terminal/state pair is self::Goto[self::GotoBase[$nonTerminal] + $state] (unless defaulted) */
183
+ protected const GotoBase = [
184
+ 0, 0, -1, 0, 0, 107, 0, 161, -2, -39, -96, 0, 260, -55, 0, 0, 0, 0, 114, 110,
185
+ -16, 0, -8, 0, 64, 52, 0, 0, -66, -9, -255, 103, -11, 19, 0, 0, -44, 236, 27, 0,
186
+ 73, 0, 0, 233, 0, 0, 0, 29, 0, 0, 0, 0, 67, -47, 0, 0, 35, 43, 7, 51,
187
+ -35, -86, 0, 0, -50, 48, 0, 25, 109, 4, -68, 0, 0,
188
+ ];
189
+
190
+ /** Table of states to goto after reduction. Indexed according to self::GotoBase comment. */
191
+ 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, 190, 191, 192, 218, 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, 223,
198
+ 404, 404, 404, 404, 183, 184, 185, 524, 524, 524, 404, 404, 404, 404, 404, 391, 235, 615, 318, 526,
199
+ 526, 526, 526, 584, 584, 584, 526, 526, 526, 526, 526, 526, 526, 526, 615, 616, 596, 596, 596, 596,
200
+ 596, 596, 300, 300, 300, 300, 227, 616, 300, 424, 338, 335, 300, 227, 227, 394, 433, 432, 316, 317,
201
+ 397, 344, 389, 227, 227, 631, 514, 213, 316, 317, 275, 582, 582, 430, 427, 428, 227, 215, 216, 228,
202
+ 322, 229, 221, 230, 231, 541, 541, 541, 541, 541, 541, 541, 541, 563, 563, 563, 563, 563, 563, 563,
203
+ 563, 561, 561, 561, 561, 561, 561, 561, 561, 305, 305, 305, 305, 305, 305, 305, 305, 301, 301, 301,
204
+ 301, 346, 517, 301, 621, 622, 623, 301, 401, 408, 410, 409, 411, 415, 328, 269, 270, 586, 587, 588,
205
+ 315, 315, 315, 381, 330, 348, 589, 590, 491, 515, 345, 382, 0, 0, 0, 0, 0, 0, 0, 0,
206
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208
+ 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 0, 0, 0, 0, 384,
209
+ 384, 384, 0, 0, 0, 0, 0, 384, 0, 0, 384, 384, 384,
210
+ ];
211
+
212
+ /** Table indexed analogously to self::Goto. If self::GotoCheck[self::GotoBase[$nonTerminal] + $state] != $nonTerminal
213
+ * then the goto state is defaulted, i.e. self::GotoDefault[$nonTerminal] should be used. */
214
+ protected const GotoCheck = [
215
+ 2, 2, 2, 2, 32, 32, 2, 30, 30, 58, 2, 69, 30, 30, 30, 30, 2, 2, 2, 2,
216
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
217
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
218
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
219
+ 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, 61,
221
+ 28, 28, 28, 28, 5, 5, 5, 28, 28, 28, 28, 28, 28, 28, 28, 18, 61, 70, 19, 53,
222
+ 53, 53, 53, 64, 64, 64, 53, 53, 53, 53, 53, 53, 53, 53, 70, 70, 64, 64, 64, 64,
223
+ 64, 64, 7, 7, 7, 7, 9, 70, 7, 10, 10, 20, 7, 9, 9, 10, 10, 10, 13, 13,
224
+ 22, 10, 10, 9, 9, 9, 10, 60, 13, 13, 13, 64, 64, 36, 36, 36, 9, 33, 33, 33,
225
+ 33, 33, 33, 33, 33, 38, 38, 38, 38, 38, 38, 38, 38, 56, 56, 56, 56, 56, 56, 56,
226
+ 56, 57, 57, 57, 57, 57, 57, 57, 57, 59, 59, 59, 59, 59, 59, 59, 59, 37, 37, 37,
227
+ 37, 9, 9, 37, 8, 8, 8, 37, 25, 25, 25, 25, 25, 24, 37, 65, 65, 65, 65, 65,
228
+ 52, 52, 52, 12, 43, 43, 67, 67, 40, 47, 29, 12, -1, -1, -1, -1, -1, -1, -1, -1,
229
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
230
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
231
+ -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, 7, 7, 7, 7, -1, -1, -1, -1, 5,
232
+ 5, 5, -1, -1, -1, -1, -1, 5, -1, -1, 5, 5, 5,
233
+ ];
234
+
235
+ /** Map of non-terminals to the default state to goto after their reduction */
236
+ 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, 217, 293, 225, 214, 313, 203,
240
+ 212, 614, 226, 294, 568, 268, 576, 583, 314, 600, 613, 321, 337,
241
+ ];
242
+
243
+ /** Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for
244
+ * determining the state to goto after reduction. */
245
+ 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,
251
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
252
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
253
+ 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,
261
+ ];
262
+
263
+ /** Map of rules to the length of their right-hand side, which is the number of elements that have to
264
+ * be popped from the stack(s) on reduction. */
265
+ 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,
281
+ ];
282
+
283
+ /** Map of symbols to their names */
284
+ protected const SymbolToName = [
285
+ 'end',
286
+ 'error',
287
+ "','",
288
+ "'or'",
289
+ "'xor'",
290
+ "'and'",
291
+ "'=>'",
292
+ "'='",
293
+ "'+='",
294
+ "'-='",
295
+ "'*='",
296
+ "'/='",
297
+ "'.='",
298
+ "'%='",
299
+ "'&='",
300
+ "'|='",
301
+ "'^='",
302
+ "'<<='",
303
+ "'>>='",
304
+ "'**='",
305
+ "'??='",
306
+ "'?'",
307
+ "':'",
308
+ "'??'",
309
+ "'||'",
310
+ "'&&'",
311
+ "'|'",
312
+ "'^'",
313
+ "'&'",
314
+ "'&'",
315
+ "'=='",
316
+ "'!='",
317
+ "'==='",
318
+ "'!=='",
319
+ "'<=>'",
320
+ "'<'",
321
+ "'<='",
322
+ "'>'",
323
+ "'>='",
324
+ "'<<'",
325
+ "'>>'",
326
+ "'in'",
327
+ "'+'",
328
+ "'-'",
329
+ "'.'",
330
+ "'*'",
331
+ "'/'",
332
+ "'%'",
333
+ "'!'",
334
+ "'instanceof'",
335
+ "'~'",
336
+ "'++'",
337
+ "'--'",
338
+ "'(int)'",
339
+ "'(float'",
340
+ "'(string)'",
341
+ "'(array)'",
342
+ "'(object)'",
343
+ "'(bool)'",
344
+ "'@'",
345
+ "'**'",
346
+ "'['",
347
+ "'new'",
348
+ "'clone'",
349
+ 'integer',
350
+ 'floating-point number',
351
+ 'identifier',
352
+ 'variable name',
353
+ 'constant',
354
+ 'variable',
355
+ 'number',
356
+ 'string content',
357
+ 'quoted string',
358
+ "'match'",
359
+ "'default'",
360
+ "'function'",
361
+ "'fn'",
362
+ "'return'",
363
+ "'use'",
364
+ "'isset'",
365
+ "'empty'",
366
+ "'->'",
367
+ "'?->'",
368
+ "'??->'",
369
+ "'list'",
370
+ "'array'",
371
+ "'heredoc start'",
372
+ "'heredoc end'",
373
+ "'\${'",
374
+ "'{\$'",
375
+ "'::'",
376
+ "'...'",
377
+ "'(expand)'",
378
+ 'fully qualified name',
379
+ 'namespaced name',
380
+ "'null'",
381
+ "'true'",
382
+ "'false'",
383
+ "'e'",
384
+ "'m'",
385
+ "'a'",
386
+ "'('",
387
+ "')'",
388
+ "'{'",
389
+ "'}'",
390
+ "';'",
391
+ "']'",
392
+ "'\"'",
393
+ "'$'",
394
+ "'\\\\'",
395
+ 'whitespace',
396
+ 'comment',
397
+ ];
398
+
399
+ /** Temporary value containing the result of last semantic action (reduction) */
400
+ protected mixed $semValue = null;
401
+
402
+ /** Semantic value stack (contains values of tokens and semantic action results) */
403
+ protected array $semStack;
404
+
405
+ /** @var Token[] Start attribute stack */
406
+ protected array $startTokenStack;
407
+
408
+
409
+ protected function reduce(int $rule, int $pos): void
410
+ {
411
+ (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],
413
+ 2 => fn() => $this->semValue = new Node\ModifierNode($this->semStack[$pos]),
414
+ 3 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos]),
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) {
421
+ $this->semStack[$pos - 2][] = $this->semStack[$pos];
422
+ $this->semValue = $this->semStack[$pos - 2];
423
+ },
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];
447
+ },
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\InRangeNode($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 Expression\ClosureUseNode($this->semStack[$pos], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 1]->position),
517
+ 168, 170 => fn() => $this->semValue = new Expression\FunctionCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
518
+ 169, 171 => fn() => $this->semValue = 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\EncapsedStringNode::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) {
549
+ $var = $this->semStack[$pos]->name;
550
+ $this->semValue = \is_string($var)
551
+ ? new Node\VarLikeIdentifierNode($var, $this->startTokenStack[$pos]->position)
552
+ : $var;
553
+ },
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) {
556
+ $this->semValue = $this->semStack[$pos];
557
+ $end = count($this->semValue) - 1;
558
+ if ($this->semValue[$end] === null) {
559
+ array_pop($this->semValue);
560
+ }
561
+ },
562
+ 253, 255 => fn() => $this->semValue = new Expression\ArrayItemNode($this->semStack[$pos], null, false, false, $this->startTokenStack[$pos]->position),
563
+ 254 => fn() => $this->semValue = new Expression\ArrayItemNode($this->semStack[$pos], null, true, false, $this->startTokenStack[$pos - 1]->position),
564
+ 256, 258, 259 => fn() => $this->semValue = new Expression\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
565
+ 257, 260 => fn() => $this->semValue = new Expression\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 3], true, false, $this->startTokenStack[$pos - 3]->position),
566
+ 261, 262 => fn() => $this->semValue = new Expression\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 Scalar\EncapsedStringPartNode($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),
578
+ })();
579
+ }
580
+ }