Skip to content

zyq8709/PHP-Parser

This branch is 1130 commits behind nikic/PHP-Parser:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

98d28d7 · Oct 3, 2015
Sep 21, 2015
Sep 16, 2015
Sep 19, 2015
Sep 21, 2015
Oct 3, 2015
Jul 9, 2015
Sep 16, 2015
Sep 20, 2015
Jul 14, 2015
Jun 26, 2011
Sep 16, 2015
Sep 12, 2014
Jul 14, 2015
Sep 21, 2015
Jun 20, 2015

Repository files navigation

PHP Parser

This is a PHP 5.2 to PHP 5.6 parser written in PHP. Its purpose is to simplify static code analysis and manipulation.

Documentation for version 1.x (stable; for running on PHP >= 5.3).

Documentation for version 2.x-dev (dev; for running on PHP >= 5.4).

In a Nutshell

The parser turns PHP source code into an abstract syntax tree. For example, if you pass the following code into the parser:

<?php
echo 'Hi', 'World';
hello\world('foo', 'bar' . 'baz');

You'll get a syntax tree looking roughly like this:

array(
    0: Stmt_Echo(
        exprs: array(
            0: Scalar_String(
                value: Hi
            )
            1: Scalar_String(
                value: World
            )
        )
    )
    1: Expr_FuncCall(
        name: Name(
            parts: array(
                0: hello
                1: world
            )
        )
        args: array(
            0: Arg(
                value: Scalar_String(
                    value: foo
                )
                byRef: false
            )
            1: Arg(
                value: Expr_Concat(
                    left: Scalar_String(
                        value: bar
                    )
                    right: Scalar_String(
                        value: baz
                    )
                )
                byRef: false
            )
        )
    )
)

You can then work with this syntax tree, for example to statically analyze the code (e.g. to find programming errors or security issues).

Additionally, you can convert a syntax tree back to PHP code. This allows you to do code preprocessing (like automatedly porting code to older PHP versions).

Installation

The preferred installation method is composer:

php composer.phar require nikic/php-parser

Documentation

  1. Introduction
  2. Usage of basic components
  3. Other node tree representations
  4. Code generation

Component documentation:

  1. Error
  2. Lexer

About

A PHP parser written in PHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 88.2%
  • Yacc 11.8%