https://github.com/mck89/peast
JavaScript parser written in PHP that generates AST from your code according to ECMAScript specification
https://github.com/mck89/peast
ast-generation ecmascript javascipt javascript parser parsing php syntax-tree tokenizer traverse validator
Last synced: 3 days ago
JSON representation
JavaScript parser written in PHP that generates AST from your code according to ECMAScript specification
- Host: GitHub
- URL: https://github.com/mck89/peast
- Owner: mck89
- License: bsd-3-clause
- Created: 2016-07-17T09:50:42.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-10-10T12:53:42.000Z (3 months ago)
- Last Synced: 2026-01-05T18:23:26.321Z (8 days ago)
- Topics: ast-generation, ecmascript, javascipt, javascript, parser, parsing, php, syntax-tree, tokenizer, traverse, validator
- Language: PHP
- Homepage:
- Size: 1.75 MB
- Stars: 188
- Watchers: 9
- Forks: 23
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Peast
==========
[](https://packagist.org/packages/mck89/peast)
[](https://packagist.org/packages/mck89/peast)
[](https://packagist.org/packages/mck89/peast)
[](https://github.com/mck89/peast/actions/workflows/test.yml)
**Peast** _(PHP ECMAScript Abstract Syntax Tree)_ is a PHP 5.4+ library that parses JavaScript code, according to [ECMAScript specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm), and generates an abstract syntax tree following the [ESTree standard](https://github.com/estree/estree).
Installation
-------------
Include the following requirement to your composer.json:
```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:
```php
require_once "vendor/autoload.php";
$source = "var a = 1"; // Your JavaScript code
$ast = Peast\Peast::latest($source, $options)->parse(); // Parse it!
```
Known issues
-------------
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.
Documentation
-------------
Read the documentation for more examples and explanations:
1. [AST generation and tokenization](doc/ast-and-tokenization.md)
2. [Tree Traversing](doc/tree-traversing.md)
3. [Querying By Selector](doc/querying-by-selector.md)
4. [Rendering](doc/rendering.md)
[Changelog](doc/changelog.md)