php-parser

command module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2018 License: MIT Imports: 12 Imported by: 0

README

PHP-Parser

Go Report Card Exago Exago GoDoc

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

Features:

  • Fully support PHP5 and PHP7 syntax
  • Abstract syntax tree representation
  • Traversing AST
  • Namespace resolver

Install

go get github.com/z7zmey/php-parser

Example

package main

import (
	"bytes"

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

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

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

CLI dumper

$GOPATH/bin/php-parser /path/to/file/or/dir

Roadmap

  • Lexer
  • PHP 7 syntax analyzer
  • AST nodes
  • AST visitor
  • AST dumper
  • node position
  • handling comments
  • PHP 5 syntax analyzer
  • Tests
  • Namespace resolver
  • PhpDocComment parser
  • Error handling
  • Stabilize api
  • Documentation
  • Pretty printer
  • Code flow graph

Documentation

Overview

A Parser for PHP written in Go

Features:

  • Fully support PHP5 and PHP7 syntax
  • Abstract syntax tree representation
  • Traversing AST

Install:

go get github.com/z7zmey/php-parser

CLI dumper:

$GOPATH/bin/php-parser -php5 /path/to/file/or/dir

Package usage example:

package main

import (
	"bytes"

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

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

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

Directories

Path Synopsis
Package php5 parses PHP5
Package php5 parses PHP5
Package php7 parses PHP7
Package php7 parses PHP7
Package scanner transforms an input string into a stream of PHP tokens.
Package scanner transforms an input string into a stream of PHP tokens.
Package visitor contains walker.visitor implementations Package visitor contains walker.visitor implementations
Package visitor contains walker.visitor implementations Package visitor contains walker.visitor implementations
Package walker declares walking behavior
Package walker declares walking behavior

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL