Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

TysonAndre/php-parser-to-php-ast

Repository files navigation

PHP-Parser to php-ast

Build Status Build status (Windows)

This converts ASTs(Abstract Syntax Trees) from PHP-Parser to php-ast. It can be used as a PHP-only implementation of php-ast. It can alternatively be used as a best-effort parser for syntactically valid PHP code.

Also see https://github.com/TysonAndre/tolerant-php-parser-to-php-ast (in progress, may have better results)

Supported php-ast AST versions: 40, 45, 50

Current Status

No tests are failing

  • Need to normalize namespaces (Mostly done)

Current Issues

  • The test suite this is based off of covers common cases for Phan, but edge cases still remain. See #4
  • See nikic/php-ast#78

Remaining work:

  • Translate PhpParser exception to a \ParseError instance

Usage

Using it as a slow substitute for php-ast

Using it as an error-tolerant substitute for php-ast: (e.g. for use in IDEs)

  • There are currently two modes: omitting errors and adding placeholders (e.g. __INCOMPLETE_VARIABLE__).
  • Omitting errors only handles some common cases that come up while editing a file.
  • Placeholders may change in the future.
  • tests/ASTConverter/ErrorTolerantConversionTest.php
  • If performance is an issue, cache previous results for a file's contents (in combination with the version used to generate the file ASTConversion::ASTCONVERTER_VERSION)

Running unit tests

To run unit tests, you must install nikic/php-ast. A version supporting AST versions 40 and/or 50 should be installed (~0.1.5 is preferred)

  • Then run vendor/bin/phpunit

Possible Future Enhancements

About

Abandoned. Supports only PHPParser 3. convert PHPParser\Node to \ast\Node. See https://github.com/TysonAndre/tolerant-php-parser-to-php-ast/ for better error tolerance.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /