php
                                
                                 php copied to clipboard
                                
                                    php copied to clipboard
                            
                            
                            
                        Parser for PHP written in Go
php
Archived: This project only supported PHP 5, and never matured beyond a basic parser and AST visualizer. Since I lost interest, it has fallen into disrepair, beyond the more conventional bugs.
Parser for PHP written in Go
See this post for an introduction.
Test console:
Project Status
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
| Feature | Status | 
|---|---|
| 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 | 
Project Components
| Directory | Description | 
|---|---|
| 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/togo | transpiler | 
| 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 | 
