@appthreat/atom 1.8.0 → 1.8.1

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 (300) hide show
  1. package/astgen.js +6 -2
  2. package/index.js +3 -1
  3. package/package.json +3 -2
  4. package/phpastgen.js +31 -0
  5. package/plugins/autoload.php +25 -0
  6. package/plugins/bin/atom +1 -1
  7. package/plugins/bin/atom.bat +1 -1
  8. package/plugins/bin/php-parse +119 -0
  9. package/plugins/composer/ClassLoader.php +579 -0
  10. package/plugins/composer/InstalledVersions.php +359 -0
  11. package/plugins/composer/LICENSE +21 -0
  12. package/plugins/composer/autoload_classmap.php +260 -0
  13. package/plugins/composer/autoload_namespaces.php +9 -0
  14. package/plugins/composer/autoload_psr4.php +10 -0
  15. package/plugins/composer/autoload_real.php +36 -0
  16. package/plugins/composer/autoload_static.php +286 -0
  17. package/plugins/composer/installed.json +67 -0
  18. package/plugins/composer/installed.php +32 -0
  19. package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
  20. package/plugins/lib/{io.appthreat.atom-1.8.0.jar → io.appthreat.atom-1.8.1.jar} +0 -0
  21. package/plugins/lib/{io.appthreat.c2cpg_3-1.1.1.jar → io.appthreat.c2cpg_3-1.1.3.jar} +0 -0
  22. package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.1.1.jar → io.appthreat.dataflowengineoss_3-1.1.3.jar} +0 -0
  23. package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.1.1.jar → io.appthreat.javasrc2cpg_3-1.1.3.jar} +0 -0
  24. package/plugins/lib/{io.appthreat.jimple2cpg_3-1.1.1.jar → io.appthreat.jimple2cpg_3-1.1.3.jar} +0 -0
  25. package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.1.1.jar → io.appthreat.jssrc2cpg_3-1.1.3.jar} +0 -0
  26. package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
  27. package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.1.1.jar → io.appthreat.pysrc2cpg_3-1.1.3.jar} +0 -0
  28. package/plugins/lib/{io.appthreat.semanticcpg_3-1.1.1.jar → io.appthreat.semanticcpg_3-1.1.3.jar} +0 -0
  29. package/plugins/lib/{io.appthreat.x2cpg_3-1.1.1.jar → io.appthreat.x2cpg_3-1.1.3.jar} +0 -0
  30. package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +31 -0
  31. package/plugins/nikic/php-parser/LICENSE +29 -0
  32. package/plugins/nikic/php-parser/Makefile +10 -0
  33. package/plugins/nikic/php-parser/README.md +233 -0
  34. package/plugins/nikic/php-parser/bin/php-parse +206 -0
  35. package/plugins/nikic/php-parser/composer.json +43 -0
  36. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
  37. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
  38. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
  39. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
  40. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  41. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
  42. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
  43. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
  44. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
  45. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
  46. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +149 -0
  47. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +161 -0
  48. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
  49. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
  50. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
  51. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
  52. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
  53. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
  54. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +333 -0
  55. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
  56. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +207 -0
  57. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
  58. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +234 -0
  59. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +171 -0
  60. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
  61. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
  62. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
  63. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
  65. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
  66. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  67. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +271 -0
  68. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
  69. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +226 -0
  70. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
  71. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
  72. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  73. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +56 -0
  74. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
  75. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
  76. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  77. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  78. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
  79. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
  80. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
  81. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
  82. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
  83. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
  84. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  85. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
  86. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
  87. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  88. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  89. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
  90. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  91. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
  92. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +3 -0
  93. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
  94. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
  95. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
  96. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
  97. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
  98. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
  99. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
  100. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +11 -0
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +11 -0
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +11 -0
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +3 -0
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +75 -0
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +30 -0
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +269 -0
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +84 -0
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +3 -0
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +3 -0
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +3 -0
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +3 -0
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
  209. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
  210. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +29 -0
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +3 -0
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
  235. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
  236. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +82 -0
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +3 -0
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
  253. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +3 -0
  254. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
  255. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
  256. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
  257. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
  258. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
  259. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
  260. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
  261. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
  262. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
  263. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +3 -0
  264. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
  265. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
  266. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
  267. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
  268. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  269. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
  270. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  271. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +146 -0
  272. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +178 -0
  273. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +290 -0
  274. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
  275. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +278 -0
  276. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
  277. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
  278. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  279. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
  280. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
  281. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +262 -0
  282. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +51 -0
  283. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +38 -0
  284. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
  285. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
  286. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2699 -0
  287. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
  288. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
  289. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1241 -0
  290. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
  291. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
  292. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1177 -0
  293. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  294. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1655 -0
  295. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  296. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +56 -0
  297. package/plugins/nikic/php-parser/phpstan-baseline.neon +236 -0
  298. package/plugins/nikic/php-parser/phpstan.neon.dist +8 -0
  299. package/utils.mjs +10 -0
  300. package/plugins/lib/io.appthreat.atom-1.8.0-classpath.jar +0 -0
@@ -0,0 +1,233 @@
1
+ PHP Parser
2
+ ==========
3
+
4
+ [![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
5
+
6
+ This is a PHP parser written in PHP. Its purpose is to simplify static code analysis and
7
+ manipulation.
8
+
9
+ [**Documentation for version 5.x**][doc_master] (current; for running on PHP >= 7.4; for parsing PHP 7.0 to PHP 8.3, with limited support for parsing PHP 5.x).
10
+
11
+ [Documentation for version 4.x][doc_4_x] (supported; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.3).
12
+
13
+ Features
14
+ --------
15
+
16
+ The main features provided by this library are:
17
+
18
+ * Parsing PHP 7, and PHP 8 code into an abstract syntax tree (AST).
19
+ * Invalid code can be parsed into a partial AST.
20
+ * The AST contains accurate location information.
21
+ * Dumping the AST in human-readable form.
22
+ * Converting an AST back to PHP code.
23
+ * Formatting can be preserved for partially changed ASTs.
24
+ * Infrastructure to traverse and modify ASTs.
25
+ * Resolution of namespaced names.
26
+ * Evaluation of constant expressions.
27
+ * Builders to simplify AST construction for code generation.
28
+ * Converting an AST into JSON and back.
29
+
30
+ Quick Start
31
+ -----------
32
+
33
+ Install the library using [composer](https://getcomposer.org):
34
+
35
+ php composer.phar require nikic/php-parser
36
+
37
+ Parse some PHP code into an AST and dump the result in human-readable form:
38
+
39
+ ```php
40
+ <?php
41
+ use PhpParser\Error;
42
+ use PhpParser\NodeDumper;
43
+ use PhpParser\ParserFactory;
44
+
45
+ $code = <<<'CODE'
46
+ <?php
47
+
48
+ function test($foo)
49
+ {
50
+ var_dump($foo);
51
+ }
52
+ CODE;
53
+
54
+ $parser = (new ParserFactory())->createForNewestSupportedVersion();
55
+ try {
56
+ $ast = $parser->parse($code);
57
+ } catch (Error $error) {
58
+ echo "Parse error: {$error->getMessage()}\n";
59
+ return;
60
+ }
61
+
62
+ $dumper = new NodeDumper;
63
+ echo $dumper->dump($ast) . "\n";
64
+ ```
65
+
66
+ This dumps an AST looking something like this:
67
+
68
+ ```
69
+ array(
70
+ 0: Stmt_Function(
71
+ attrGroups: array(
72
+ )
73
+ byRef: false
74
+ name: Identifier(
75
+ name: test
76
+ )
77
+ params: array(
78
+ 0: Param(
79
+ attrGroups: array(
80
+ )
81
+ flags: 0
82
+ type: null
83
+ byRef: false
84
+ variadic: false
85
+ var: Expr_Variable(
86
+ name: foo
87
+ )
88
+ default: null
89
+ )
90
+ )
91
+ returnType: null
92
+ stmts: array(
93
+ 0: Stmt_Expression(
94
+ expr: Expr_FuncCall(
95
+ name: Name(
96
+ name: var_dump
97
+ )
98
+ args: array(
99
+ 0: Arg(
100
+ name: null
101
+ value: Expr_Variable(
102
+ name: foo
103
+ )
104
+ byRef: false
105
+ unpack: false
106
+ )
107
+ )
108
+ )
109
+ )
110
+ )
111
+ )
112
+ )
113
+ ```
114
+
115
+ Let's traverse the AST and perform some kind of modification. For example, drop all function bodies:
116
+
117
+ ```php
118
+ use PhpParser\Node;
119
+ use PhpParser\Node\Stmt\Function_;
120
+ use PhpParser\NodeTraverser;
121
+ use PhpParser\NodeVisitorAbstract;
122
+
123
+ $traverser = new NodeTraverser();
124
+ $traverser->addVisitor(new class extends NodeVisitorAbstract {
125
+ public function enterNode(Node $node) {
126
+ if ($node instanceof Function_) {
127
+ // Clean out the function body
128
+ $node->stmts = [];
129
+ }
130
+ }
131
+ });
132
+
133
+ $ast = $traverser->traverse($ast);
134
+ echo $dumper->dump($ast) . "\n";
135
+ ```
136
+
137
+ This gives us an AST where the `Function_::$stmts` are empty:
138
+
139
+ ```
140
+ array(
141
+ 0: Stmt_Function(
142
+ attrGroups: array(
143
+ )
144
+ byRef: false
145
+ name: Identifier(
146
+ name: test
147
+ )
148
+ params: array(
149
+ 0: Param(
150
+ attrGroups: array(
151
+ )
152
+ type: null
153
+ byRef: false
154
+ variadic: false
155
+ var: Expr_Variable(
156
+ name: foo
157
+ )
158
+ default: null
159
+ )
160
+ )
161
+ returnType: null
162
+ stmts: array(
163
+ )
164
+ )
165
+ )
166
+ ```
167
+
168
+ Finally, we can convert the new AST back to PHP code:
169
+
170
+ ```php
171
+ use PhpParser\PrettyPrinter;
172
+
173
+ $prettyPrinter = new PrettyPrinter\Standard;
174
+ echo $prettyPrinter->prettyPrintFile($ast);
175
+ ```
176
+
177
+ This gives us our original code, minus the `var_dump()` call inside the function:
178
+
179
+ ```php
180
+ <?php
181
+
182
+ function test($foo)
183
+ {
184
+ }
185
+ ```
186
+
187
+ For a more comprehensive introduction, see the documentation.
188
+
189
+ Documentation
190
+ -------------
191
+
192
+ 1. [Introduction](doc/0_Introduction.markdown)
193
+ 2. [Usage of basic components](doc/2_Usage_of_basic_components.markdown)
194
+
195
+ Component documentation:
196
+
197
+ * [Walking the AST](doc/component/Walking_the_AST.markdown)
198
+ * Node visitors
199
+ * Modifying the AST from a visitor
200
+ * Short-circuiting traversals
201
+ * Interleaved visitors
202
+ * Simple node finding API
203
+ * Parent and sibling references
204
+ * [Name resolution](doc/component/Name_resolution.markdown)
205
+ * Name resolver options
206
+ * Name resolution context
207
+ * [Pretty printing](doc/component/Pretty_printing.markdown)
208
+ * Converting AST back to PHP code
209
+ * Customizing formatting
210
+ * Formatting-preserving code transformations
211
+ * [AST builders](doc/component/AST_builders.markdown)
212
+ * Fluent builders for AST nodes
213
+ * [Lexer](doc/component/Lexer.markdown)
214
+ * Emulation
215
+ * Tokens, positions and attributes
216
+ * [Error handling](doc/component/Error_handling.markdown)
217
+ * Column information for errors
218
+ * Error recovery (parsing of syntactically incorrect code)
219
+ * [Constant expression evaluation](doc/component/Constant_expression_evaluation.markdown)
220
+ * Evaluating constant/property/etc initializers
221
+ * Handling errors and unsupported expressions
222
+ * [JSON representation](doc/component/JSON_representation.markdown)
223
+ * JSON encoding and decoding of ASTs
224
+ * [Performance](doc/component/Performance.markdown)
225
+ * Disabling Xdebug
226
+ * Reusing objects
227
+ * Garbage collection impact
228
+ * [Frequently asked questions](doc/component/FAQ.markdown)
229
+ * Parent and sibling references
230
+
231
+ [doc_3_x]: https://github.com/nikic/PHP-Parser/tree/3.x/doc
232
+ [doc_4_x]: https://github.com/nikic/PHP-Parser/tree/4.x/doc
233
+ [doc_master]: https://github.com/nikic/PHP-Parser/tree/master/doc
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env php
2
+ <?php
3
+
4
+ foreach ([__DIR__ . '/../../../autoload.php', __DIR__ . '/../vendor/autoload.php'] as $file) {
5
+ if (file_exists($file)) {
6
+ require $file;
7
+ break;
8
+ }
9
+ }
10
+
11
+ ini_set('xdebug.max_nesting_level', 3000);
12
+
13
+ // Disable Xdebug var_dump() output truncation
14
+ ini_set('xdebug.var_display_max_children', -1);
15
+ ini_set('xdebug.var_display_max_data', -1);
16
+ ini_set('xdebug.var_display_max_depth', -1);
17
+
18
+ list($operations, $files, $attributes) = parseArgs($argv);
19
+
20
+ /* Dump nodes by default */
21
+ if (empty($operations)) {
22
+ $operations[] = 'dump';
23
+ }
24
+
25
+ if (empty($files)) {
26
+ showHelp("Must specify at least one file.");
27
+ }
28
+
29
+ $parser = (new PhpParser\ParserFactory())->createForVersion($attributes['version']);
30
+ $dumper = new PhpParser\NodeDumper([
31
+ 'dumpComments' => true,
32
+ 'dumpPositions' => $attributes['with-positions'],
33
+ ]);
34
+ $prettyPrinter = new PhpParser\PrettyPrinter\Standard;
35
+
36
+ $traverser = new PhpParser\NodeTraverser();
37
+ $traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
38
+
39
+ foreach ($files as $file) {
40
+ if ($file === '-') {
41
+ $code = file_get_contents('php://stdin');
42
+ fwrite(STDERR, "====> Stdin:\n");
43
+ } else if (strpos($file, '<?php') === 0) {
44
+ $code = $file;
45
+ fwrite(STDERR, "====> Code $code\n");
46
+ } else {
47
+ if (!file_exists($file)) {
48
+ fwrite(STDERR, "File $file does not exist.\n");
49
+ exit(1);
50
+ }
51
+
52
+ $code = file_get_contents($file);
53
+ fwrite(STDERR, "====> File $file:\n");
54
+ }
55
+
56
+ if ($attributes['with-recovery']) {
57
+ $errorHandler = new PhpParser\ErrorHandler\Collecting;
58
+ $stmts = $parser->parse($code, $errorHandler);
59
+ foreach ($errorHandler->getErrors() as $error) {
60
+ $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
61
+ fwrite(STDERR, $message . "\n");
62
+ }
63
+ if (null === $stmts) {
64
+ continue;
65
+ }
66
+ } else {
67
+ try {
68
+ $stmts = $parser->parse($code);
69
+ } catch (PhpParser\Error $error) {
70
+ $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
71
+ fwrite(STDERR, $message . "\n");
72
+ exit(1);
73
+ }
74
+ }
75
+
76
+ foreach ($operations as $operation) {
77
+ if ('dump' === $operation) {
78
+ fwrite(STDERR, "==> Node dump:\n");
79
+ echo $dumper->dump($stmts, $code), "\n";
80
+ } elseif ('pretty-print' === $operation) {
81
+ fwrite(STDERR, "==> Pretty print:\n");
82
+ echo $prettyPrinter->prettyPrintFile($stmts), "\n";
83
+ } elseif ('json-dump' === $operation) {
84
+ fwrite(STDERR, "==> JSON dump:\n");
85
+ echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
86
+ } elseif ('var-dump' === $operation) {
87
+ fwrite(STDERR, "==> var_dump():\n");
88
+ var_dump($stmts);
89
+ } elseif ('resolve-names' === $operation) {
90
+ fwrite(STDERR, "==> Resolved names.\n");
91
+ $stmts = $traverser->traverse($stmts);
92
+ }
93
+ }
94
+ }
95
+
96
+ function formatErrorMessage(PhpParser\Error $e, $code, $withColumnInfo) {
97
+ if ($withColumnInfo && $e->hasColumnInfo()) {
98
+ return $e->getMessageWithColumnInfo($code);
99
+ } else {
100
+ return $e->getMessage();
101
+ }
102
+ }
103
+
104
+ function showHelp($error = '') {
105
+ if ($error) {
106
+ fwrite(STDERR, $error . "\n\n");
107
+ }
108
+ fwrite($error ? STDERR : STDOUT, <<<'OUTPUT'
109
+ Usage: php-parse [operations] file1.php [file2.php ...]
110
+ or: php-parse [operations] "<?php code"
111
+ Turn PHP source code into an abstract syntax tree.
112
+
113
+ Operations is a list of the following options (--dump by default):
114
+
115
+ -d, --dump Dump nodes using NodeDumper
116
+ -p, --pretty-print Pretty print file using PrettyPrinter\Standard
117
+ -j, --json-dump Print json_encode() result
118
+ --var-dump var_dump() nodes (for exact structure)
119
+ -N, --resolve-names Resolve names using NodeVisitor\NameResolver
120
+ -c, --with-column-info Show column-numbers for errors (if available)
121
+ -P, --with-positions Show positions in node dumps
122
+ -r, --with-recovery Use parsing with error recovery
123
+ --version=VERSION Target specific PHP version (default: newest)
124
+ -h, --help Display this page
125
+
126
+ Example:
127
+ php-parse -d -p -N -d file.php
128
+
129
+ Dumps nodes, pretty prints them, then resolves names and dumps them again.
130
+
131
+
132
+ OUTPUT
133
+ );
134
+ exit($error ? 1 : 0);
135
+ }
136
+
137
+ function parseArgs($args) {
138
+ $operations = [];
139
+ $files = [];
140
+ $attributes = [
141
+ 'with-column-info' => false,
142
+ 'with-positions' => false,
143
+ 'with-recovery' => false,
144
+ 'version' => PhpParser\PhpVersion::getNewestSupported(),
145
+ ];
146
+
147
+ array_shift($args);
148
+ $parseOptions = true;
149
+ foreach ($args as $arg) {
150
+ if (!$parseOptions) {
151
+ $files[] = $arg;
152
+ continue;
153
+ }
154
+
155
+ switch ($arg) {
156
+ case '--dump':
157
+ case '-d':
158
+ $operations[] = 'dump';
159
+ break;
160
+ case '--pretty-print':
161
+ case '-p':
162
+ $operations[] = 'pretty-print';
163
+ break;
164
+ case '--json-dump':
165
+ case '-j':
166
+ $operations[] = 'json-dump';
167
+ break;
168
+ case '--var-dump':
169
+ $operations[] = 'var-dump';
170
+ break;
171
+ case '--resolve-names':
172
+ case '-N';
173
+ $operations[] = 'resolve-names';
174
+ break;
175
+ case '--with-column-info':
176
+ case '-c';
177
+ $attributes['with-column-info'] = true;
178
+ break;
179
+ case '--with-positions':
180
+ case '-P':
181
+ $attributes['with-positions'] = true;
182
+ break;
183
+ case '--with-recovery':
184
+ case '-r':
185
+ $attributes['with-recovery'] = true;
186
+ break;
187
+ case '--help':
188
+ case '-h';
189
+ showHelp();
190
+ break;
191
+ case '--':
192
+ $parseOptions = false;
193
+ break;
194
+ default:
195
+ if (preg_match('/^--version=(.*)$/', $arg, $matches)) {
196
+ $attributes['version'] = PhpParser\PhpVersion::fromString($matches[1]);
197
+ } elseif ($arg[0] === '-' && \strlen($arg[0]) > 1) {
198
+ showHelp("Invalid operation $arg.");
199
+ } else {
200
+ $files[] = $arg;
201
+ }
202
+ }
203
+ }
204
+
205
+ return [$operations, $files, $attributes];
206
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "nikic/php-parser",
3
+ "type": "library",
4
+ "description": "A PHP parser written in PHP",
5
+ "keywords": [
6
+ "php",
7
+ "parser"
8
+ ],
9
+ "license": "BSD-3-Clause",
10
+ "authors": [
11
+ {
12
+ "name": "Nikita Popov"
13
+ }
14
+ ],
15
+ "require": {
16
+ "php": ">=7.4",
17
+ "ext-tokenizer": "*",
18
+ "ext-json": "*",
19
+ "ext-ctype": "*"
20
+ },
21
+ "require-dev": {
22
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
23
+ "ircmaxell/php-yacc": "^0.0.7"
24
+ },
25
+ "extra": {
26
+ "branch-alias": {
27
+ "dev-master": "5.0-dev"
28
+ }
29
+ },
30
+ "autoload": {
31
+ "psr-4": {
32
+ "PhpParser\\": "lib/PhpParser"
33
+ }
34
+ },
35
+ "autoload-dev": {
36
+ "psr-4": {
37
+ "PhpParser\\": "test/PhpParser/"
38
+ }
39
+ },
40
+ "bin": [
41
+ "bin/php-parse"
42
+ ]
43
+ }
@@ -0,0 +1,150 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace PhpParser\Builder;
6
+
7
+ use PhpParser;
8
+ use PhpParser\BuilderHelpers;
9
+ use PhpParser\Modifiers;
10
+ use PhpParser\Node;
11
+ use PhpParser\Node\Const_;
12
+ use PhpParser\Node\Identifier;
13
+ use PhpParser\Node\Stmt;
14
+
15
+ class ClassConst implements PhpParser\Builder {
16
+ protected int $flags = 0;
17
+ /** @var array<string, mixed> */
18
+ protected array $attributes = [];
19
+ /** @var list<Const_> */
20
+ protected array $constants = [];
21
+
22
+ /** @var list<Node\AttributeGroup> */
23
+ protected array $attributeGroups = [];
24
+ /** @var Identifier|Node\Name|Node\ComplexType|null */
25
+ protected ?Node $type = null;
26
+
27
+ /**
28
+ * Creates a class constant builder
29
+ *
30
+ * @param string|Identifier $name Name
31
+ * @param Node\Expr|bool|null|int|float|string|array $value Value
32
+ */
33
+ public function __construct($name, $value) {
34
+ $this->constants = [new Const_($name, BuilderHelpers::normalizeValue($value))];
35
+ }
36
+
37
+ /**
38
+ * Add another constant to const group
39
+ *
40
+ * @param string|Identifier $name Name
41
+ * @param Node\Expr|bool|null|int|float|string|array $value Value
42
+ *
43
+ * @return $this The builder instance (for fluid interface)
44
+ */
45
+ public function addConst($name, $value) {
46
+ $this->constants[] = new Const_($name, BuilderHelpers::normalizeValue($value));
47
+
48
+ return $this;
49
+ }
50
+
51
+ /**
52
+ * Makes the constant public.
53
+ *
54
+ * @return $this The builder instance (for fluid interface)
55
+ */
56
+ public function makePublic() {
57
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
58
+
59
+ return $this;
60
+ }
61
+
62
+ /**
63
+ * Makes the constant protected.
64
+ *
65
+ * @return $this The builder instance (for fluid interface)
66
+ */
67
+ public function makeProtected() {
68
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
69
+
70
+ return $this;
71
+ }
72
+
73
+ /**
74
+ * Makes the constant private.
75
+ *
76
+ * @return $this The builder instance (for fluid interface)
77
+ */
78
+ public function makePrivate() {
79
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
80
+
81
+ return $this;
82
+ }
83
+
84
+ /**
85
+ * Makes the constant final.
86
+ *
87
+ * @return $this The builder instance (for fluid interface)
88
+ */
89
+ public function makeFinal() {
90
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL);
91
+
92
+ return $this;
93
+ }
94
+
95
+ /**
96
+ * Sets doc comment for the constant.
97
+ *
98
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
99
+ *
100
+ * @return $this The builder instance (for fluid interface)
101
+ */
102
+ public function setDocComment($docComment) {
103
+ $this->attributes = [
104
+ 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
105
+ ];
106
+
107
+ return $this;
108
+ }
109
+
110
+ /**
111
+ * Adds an attribute group.
112
+ *
113
+ * @param Node\Attribute|Node\AttributeGroup $attribute
114
+ *
115
+ * @return $this The builder instance (for fluid interface)
116
+ */
117
+ public function addAttribute($attribute) {
118
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
119
+
120
+ return $this;
121
+ }
122
+
123
+ /**
124
+ * Sets the constant type.
125
+ *
126
+ * @param string|Node\Name|Identifier|Node\ComplexType $type
127
+ *
128
+ * @return $this
129
+ */
130
+ public function setType($type) {
131
+ $this->type = BuilderHelpers::normalizeType($type);
132
+
133
+ return $this;
134
+ }
135
+
136
+ /**
137
+ * Returns the built class node.
138
+ *
139
+ * @return Stmt\ClassConst The built constant node
140
+ */
141
+ public function getNode(): PhpParser\Node {
142
+ return new Stmt\ClassConst(
143
+ $this->constants,
144
+ $this->flags,
145
+ $this->attributes,
146
+ $this->attributeGroups,
147
+ $this->type
148
+ );
149
+ }
150
+ }