Skip to content

NodeJSDevelopment/php-parser

 
 

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.

npm version Build Status Coverage Status Gitter

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',  <-- program node
  [
    [ 'sys',  <-- first child, typed system call
      'echo', <-- operation echo
      [
        [ 'string', '"Hello World"' ]  <-- first argument
      ]
    ]
  ]
]

Try it online (demo) : http://glayzzle.com/php-parser/#demo

Use it

// initialize a new parser instance
var parser = require('php-parser').create();

// how to retrieve the AST
var AST = parser.parseEval('echo "Hello World";');

// how to list tokens
var tokens = parser.tokenGetAll('<?php echo "Hello World";');

For more details please visit he wiki.

Join the dev

If you want to change/fix the lexer you will find code to ./src/lexer/. 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.

Misc

This library is released under BSD-3 license clause.

About

🌿 NodeJS PHP Parser - extract AST or tokens (PHP5 and PHP7)

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%