@appthreat/atom 1.7.5 → 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.
- package/astgen.js +6 -2
- package/index.js +3 -1
- package/package.json +3 -2
- package/phpastgen.js +31 -0
- package/plugins/autoload.php +25 -0
- package/plugins/bin/atom +1 -1
- package/plugins/bin/atom.bat +1 -1
- package/plugins/bin/php-parse +119 -0
- package/plugins/composer/ClassLoader.php +579 -0
- package/plugins/composer/InstalledVersions.php +359 -0
- package/plugins/composer/LICENSE +21 -0
- package/plugins/composer/autoload_classmap.php +260 -0
- package/plugins/composer/autoload_namespaces.php +9 -0
- package/plugins/composer/autoload_psr4.php +10 -0
- package/plugins/composer/autoload_real.php +36 -0
- package/plugins/composer/autoload_static.php +286 -0
- package/plugins/composer/installed.json +67 -0
- package/plugins/composer/installed.php +32 -0
- package/plugins/lib/{com.fasterxml.jackson.core.jackson-annotations-2.15.2.jar → com.fasterxml.jackson.core.jackson-annotations-2.16.0.jar} +0 -0
- package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.16.0.jar +0 -0
- package/plugins/lib/{com.fasterxml.jackson.core.jackson-databind-2.15.2.jar → com.fasterxml.jackson.core.jackson-databind-2.16.0.jar} +0 -0
- package/plugins/lib/{com.github.javaparser.javaparser-core-3.25.6.jar → com.github.javaparser.javaparser-core-3.25.7.jar} +0 -0
- package/plugins/lib/{com.github.javaparser.javaparser-symbol-solver-core-3.25.6.jar → com.github.javaparser.javaparser-symbol-solver-core-3.25.7.jar} +0 -0
- package/plugins/lib/{com.typesafe.config-1.4.2.jar → com.typesafe.config-1.4.3.jar} +0 -0
- package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
- package/plugins/lib/{io.appthreat.atom-1.7.5.jar → io.appthreat.atom-1.8.1.jar} +0 -0
- package/plugins/lib/{io.appthreat.c2cpg_3-1.0.10.jar → io.appthreat.c2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.0.10.jar → io.appthreat.dataflowengineoss_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.0.10.jar → io.appthreat.javasrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.jimple2cpg_3-1.0.10.jar → io.appthreat.jimple2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.0.10.jar → io.appthreat.jssrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
- package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.0.10.jar → io.appthreat.pysrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.semanticcpg_3-1.0.10.jar → io.appthreat.semanticcpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.x2cpg_3-1.0.10.jar → io.appthreat.x2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/io.circe.circe-core_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-generic_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-jawn_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-numbers_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-parser_3-0.14.6.jar +0 -0
- package/plugins/lib/org.gradle.gradle-tooling-api-8.5.jar +0 -0
- package/plugins/lib/{org.json4s.json4s-ast_3-4.0.6.jar → org.json4s.json4s-ast_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-core_3-4.0.6.jar → org.json4s.json4s-core_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-native-core_3-4.0.6.jar → org.json4s.json4s-native-core_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-native_3-4.0.6.jar → org.json4s.json4s-native_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-scalap_3-4.0.6.jar → org.json4s.json4s-scalap_3-4.0.7.jar} +0 -0
- package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.3.0.jar +0 -0
- package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +31 -0
- package/plugins/nikic/php-parser/LICENSE +29 -0
- package/plugins/nikic/php-parser/Makefile +10 -0
- package/plugins/nikic/php-parser/README.md +233 -0
- package/plugins/nikic/php-parser/bin/php-parse +206 -0
- package/plugins/nikic/php-parser/composer.json +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +149 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +161 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +333 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +207 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +234 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Error.php +171 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +271 -0
- package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +226 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +56 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +75 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +269 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +84 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node.php +146 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +178 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +290 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +278 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +262 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +51 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2699 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1241 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1177 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1655 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
- package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +56 -0
- package/plugins/nikic/php-parser/phpstan-baseline.neon +236 -0
- package/plugins/nikic/php-parser/phpstan.neon.dist +8 -0
- package/utils.mjs +10 -0
- package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.15.2.jar +0 -0
- package/plugins/lib/io.appthreat.atom-1.7.5-classpath.jar +0 -0
- package/plugins/lib/io.circe.circe-core_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-generic_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-jawn_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-numbers_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-parser_3-0.14.5.jar +0 -0
- package/plugins/lib/org.gradle.gradle-tooling-api-8.3.jar +0 -0
- package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.2.0.jar +0 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
PHP Parser
|
|
2
|
+
==========
|
|
3
|
+
|
|
4
|
+
[](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
|
+
}
|