Parser for PHP written in Go
See this post for an introduction.
This project is under heavy development, though some pieces are more or less stable. Listed here are components that in progress or are ideas for future development
|Lexer and Parser||mostly complete. there are probably a few gaps still|
|Scoping||complete for simple cases. probably some gaps still, most notably that conditional definitions are treated as if they are always defined|
|Code search and symbol lookup||basic idea implemented, many many details missing|
|Code formatting||basic idea implemented, formatting needs to narrow down to PSR-2|
|Transpilation to Go||basic idea implemented, need follow through with more node types|
|Type inferencing||not begun|
|Dead code analysis||basic idea implemented, but only for some types of code. Also, this suffers from the same caveats as scoping|
|php/ast||(abstract syntax tree) describes the nodes in PHP as parsed by the parser|
|php/ast/printer||prints an ast back to source code|
|php/cmd||a tool used to debug the parser|
|php/lexer||reads a stream of tokens from source code|
|php/parser||the core parser|
|php/passes||tools and packages related to modifying or analyzing PHP code (heavily a work in progress)|
|php/passes/deadcode||dead code analyzer|
|php/query||tools and packages related to analyzing and finding things in PHP code (heavily a work in progress)|
|php/testdata||simple examples of PHP that must parse with no errors for tests to pass|
|php/token||describes the tokens read by the lexer|
Package lexer transforms an input string into a stream of PHP tokens.
|Package lexer transforms an input string into a stream of PHP tokens.|
Package query implements CSS/jQuery-esque selectors over a PHP AST Currently, the only supported selectors are: "node", where node is the type name of an AST node (e.g.
|Package query implements CSS/jQuery-esque selectors over a PHP AST Currently, the only supported selectors are: "node", where node is the type name of an AST node (e.g.|
Command query implements a simple CLI for querying a PHP AST.
|Command query implements a simple CLI for querying a PHP AST.|