:herb: NodeJS PHP Parser - extract AST or tokens
565
stars
1,816
commits
JavaScript
primary language
Sep 10, 2026
updated
This JavaScript library parses PHP code and converts it to an AST.
This library is distributed with npm :
npm install php-parser --save
// initialize the php parser factory class
const fs = require("fs");
const path = require("path");
const engine = require("php-parser");
// initialize a new parser instance
const parser = new engine({
// some options :
parser: {
extractDoc: true,
php7: true,
},
ast: {
withPositions: true,
},
});
// Retrieve the AST from the specified source
const eval = parser.parseEval('echo "Hello World";');
// Retrieve an array of tokens (same as php function token_get_all)
const tokens = parser.tokenGetAll('<?php echo "Hello World";');
// Load a static file (Note: this file should exist on your computer)
const phpFile = fs.readFileSync("./example.php");
// Log out results
console.log("Eval parse:", eval);
console.log("Tokens parse:", tokens);
console.log("File parse:", parser.parseCode(phpFile));
{
'kind': 'program',
'children': [
{
'kind': 'echo',
'arguments': [
{
'kind': 'string',
'isDoubleQuote': true,
'value': 'Hello World'
}
]
}
]
}
The main API exposes a class with the following methods :
You can also pass options that change the behavior of the parser/lexer.
You can add here your own project by opening an issue request.
This library is released under BSD-3 license clause.
(top 30 of 41)
JavaScript
100.0%
:herb: NodeJS PHP Parser - extract AST or tokens
565
stars
1,816
commits
JavaScript
primary language
Sep 10, 2026
updated
This JavaScript library parses PHP code and converts it to an AST.
This library is distributed with npm :
npm install php-parser --save
// initialize the php parser factory class
const fs = require("fs");
const path = require("path");
const engine = require("php-parser");
// initialize a new parser instance
const parser = new engine({
// some options :
parser: {
extractDoc: true,
php7: true,
},
ast: {
withPositions: true,
},
});
// Retrieve the AST from the specified source
const eval = parser.parseEval('echo "Hello World";');
// Retrieve an array of tokens (same as php function token_get_all)
const tokens = parser.tokenGetAll('<?php echo "Hello World";');
// Load a static file (Note: this file should exist on your computer)
const phpFile = fs.readFileSync("./example.php");
// Log out results
console.log("Eval parse:", eval);
console.log("Tokens parse:", tokens);
console.log("File parse:", parser.parseCode(phpFile));
{
'kind': 'program',
'children': [
{
'kind': 'echo',
'arguments': [
{
'kind': 'string',
'isDoubleQuote': true,
'value': 'Hello World'
}
]
}
]
}
The main API exposes a class with the following methods :
You can also pass options that change the behavior of the parser/lexer.
You can add here your own project by opening an issue request.
This library is released under BSD-3 license clause.
(top 30 of 41)
JavaScript
100.0%