Peast (PHP ECMAScript Abstract Syntax Tree) is a PHP 5.4+ library that parses JavaScript code, according to ECMAScript specification, and generates an abstract syntax tree following the ESTree standard.
Include the following requirement to your composer.json:
{
"require": {
"mck89/peast": "dev-master"
}
}
Run composer install
to install the package.
Then in your script include the autoloader and you can start using Peast:
require_once "vendor/autoload.php";
$source = "var a = 1"; // Your JavaScript code
$ast = Peast\Peast::latest($source, $options)->parse(); // Parse it!
When Xdebug is enabled and Peast is used to scan code that contains deeply nested functions, this fatal error can appear:
PHP Fatal error: Maximum function nesting level of '512' reached, aborting!
or
PHP Warning: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '256' frames
To prevent this you can set xdebug.max_nesting_level
to a higher value, such as 512.
Read the documentation for more examples and explanations: