1
0
mirror of https://github.com/danog/PHP-Parser.git synced 2025-01-22 05:41:23 +01:00
Nikita Popov 7eac2cfd8b Introduce Nop statement to collect dangling comments
A Nop statement will be inserted into statement lists if there are
any trailing comments in the list (which would otherwise not be
associated with any node).

The pretty printer output currently still contains a superfluous
newline.
2016-03-09 19:48:36 +01:00
2016-03-09 19:48:36 +01:00
2016-01-28 19:31:28 +05:30
2015-09-16 22:02:00 +09:00
2016-02-20 17:20:16 +01:00
2016-02-28 21:01:06 +01:00
2015-09-21 14:39:19 +08:00
2011-06-26 18:45:19 +02:00
2016-02-28 21:01:06 +01:00
2014-09-12 14:44:32 +02:00
2015-12-04 16:28:43 +01:00

PHP Parser

Build Status Coverage Status

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

Documentation for version 2.x (stable; for running on PHP >= 5.4; for parsing PHP 5.2 to PHP 7.0).

Documentation for version 1.x (unsupported; for running on PHP >= 5.3; for parsing PHP 5.2 to PHP 5.6).

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
Description
No description provided
Readme BSD-3-Clause 6.2 MiB
Languages
PHP 90.6%
Yacc 9.4%