Go to file
2018-02-04 19:37:27 +02:00
comment add comment tests 2018-01-13 01:58:59 +02:00
node php5 syntax 2018-02-03 20:13:11 +02:00
php5 php5 syntax 2018-02-04 19:37:27 +02:00
php7 php5 syntax 2018-02-03 20:13:11 +02:00
position fix golint comments warnings 2018-01-12 08:23:58 +02:00
scanner fix token consts 2018-01-29 16:11:45 +02:00
token add token comments 2018-01-11 20:49:00 +02:00
walker walker pakage 2018-01-17 19:01:28 +02:00
.gitignore ignore example.php 2018-01-05 13:22:38 +02:00
CODE_OF_CONDUCT.md update CODE_OF_CONDUCT.md 2018-01-05 19:49:29 +02:00
CONTRIBUTING.md create CONTRIBUTING.md 2018-01-05 19:37:08 +02:00
dumper.go walker pakage 2018-01-17 19:01:28 +02:00
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md 2018-01-05 19:23:10 +02:00
LICENSE Create LICENSE 2018-01-02 14:37:19 +02:00
main.go prepare php5 parser files 2018-01-26 15:24:56 +02:00
Makefile prepare php5 parser files 2018-01-26 15:24:56 +02:00
README.md rename php7 parser 2018-01-17 19:16:06 +02:00

PHP-Parser

Go Report Card Exago Exago

A Parser for PHP written in Go inspired by Nikic PHP Parser

Features:

  • Fully support PHP7 syntax (PHP5 in future)
  • Abstract syntax tree representation
  • Traversing AST

Example

package main

import (
	"bytes"

	"github.com/z7zmey/php-parser/parser"
	"github.com/z7zmey/php-parser/visitor"
)

func main() {
	src := bytes.NewBufferString(`<? echo "Hello world";`)
	nodes, comments, positions := parser.ParsePhp7(src, "example.php")

	visitor := Dumper{"", comments, positions}
	nodes.Walk(visitor)
}

Roadmap

  • Lexer
  • PHP 7 syntax analyzer (completely)
  • AST nodes
  • AST visitor
  • AST dumper
  • node position
  • handling comments
  • Tests
  • Error handling
  • Stabilize api
  • Documentation
  • PHP 5 syntax analyzer
  • Code flow graph
  • Pretty printer