Download Latest Version textfile.zip (202 Bytes)
Email in envelope

Get an email when there's a new version of Laravel

Home / vendor / nikic / php-parser / lib / PhpParser
Name Modified Size InfoDownloads / Week
Parent folder
Node 2017-07-31
Serializer 2017-07-31
Comment 2017-07-31
PrettyPrinter 2017-07-31
Builder 2017-07-31
Parser 2017-07-31
Lexer 2017-07-31
Unserializer 2017-07-31
NodeVisitor 2017-07-31
ErrorHandler 2017-07-31
PrettyPrinterAbstract.php 2017-07-31 13.0 kB
Unserializer.php 2017-07-31 291 Bytes
Serializer.php 2017-07-31 283 Bytes
ParserAbstract.php 2017-07-31 29.8 kB
ParserFactory.php 2017-07-31 1.6 kB
Parser.php 2017-07-31 592 Bytes
NodeVisitorAbstract.php 2017-07-31 316 Bytes
NodeTraverserInterface.php 2017-07-31 576 Bytes
NodeVisitor.php 2017-07-31 1.9 kB
NodeDumper.php 2017-07-31 6.5 kB
NodeTraverser.php 2017-07-31 6.5 kB
NodeAbstract.php 2017-07-31 2.8 kB
Node.php 2017-07-31 1.8 kB
ErrorHandler.php 2017-07-31 268 Bytes
Lexer.php 2017-07-31 15.1 kB
Comment.php 2017-07-31 4.6 kB
Error.php 2017-07-31 4.5 kB
BuilderAbstract.php 2017-07-31 5.6 kB
BuilderFactory.php 2017-07-31 3.4 kB
Autoloader.php 2017-07-31 988 Bytes
Builder.php 2017-07-31 170 Bytes
Totals: 31 Items   100.7 kB 0

PHP Parser

Build Status Coverage Status

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

Documentation for version 3.x (stable; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.1).

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 handling
  2. Lexer
Source: README.md, updated 2017-07-31