Skip to content

qfox/php-parser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-parser

Parse PHP code from NodeJS and convert it to AST. This library is a standalone module of a larger project named Glayzzle.

Build Status Coverage Status

Install it

$ npm install php-parser --save

Try it

$ cd bin
$ node test.js -e "echo 'Hello World';"

Will output :

*** START TESTING ***

-- TOKENS :
T_ECHO T_CONSTANT_ENCAPSED_STRING ;
-- AST :
[ 'program',
  [ [ 'sys',
      'echo',
      [ [ 'string', '"Hello World"' ] ] ] ] ]

Use it

var parser = require('php-parser');
var AST = parser.parseEval('echo "Hello World";');
console.log(AST);

Join the dev

If you want to change/fix the lexer you will find code to ./src/lexer/. Do not change dirrectly ./src/lexer.js or ./src/tokens.js, they are generated with the command npm run build

You can also implement the parser, the code is into ./src/parser/. To check your changes add tests into ./test/parser/, and run npm run test. Try to keep or improve the coverage levels.

The command line options :

Usage: test [options] [-f] <file>

  -f <file>                      Parse and test the specified file
  -d <path>                      Parse each file in the specified path
  -r                             Use recursivity with the specified path
  -e                             Eval the specified input and shows AST
  -v                             Enable verbose mode and show debug
  -h, --help                     Print help and exit

If you run into problems with a test, run it with the cli and add the --debug flag.

Releases

Current version is under developpement, all tokens are not yet implemented, but consider that the lexer sucessfully pass the parsing of ZF2 and Laravel, and many aspects of php are implemented.

  • 0.0.7 : isset, unset, try, catch, finally, fix T_STATIC, fix T_NEW with a dynamic var name, improve tests
  • 0.0.6 : Improve tests, implements arrays & new statements
  • 0.0.5 : Implement traits

Misc

This library is released under BSD-3 license clause.

About

Parse PHP code with NodeJS and convert it to AST

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 97.5%
  • PHP 2.5%