Merge pull request #124 from z7zmey/issue-120

[#120] move dog.go from root folder
This commit is contained in:
Vadym Slizov 2021-02-13 22:18:29 +02:00 committed by GitHub
commit 15e7237b45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 79 deletions

View File

@ -37,30 +37,44 @@ Usage example
package main package main
import ( import (
"fmt" "log"
"os" "os"
"github.com/z7zmey/php-parser/php7" "github.com/z7zmey/php-parser/pkg/cfg"
"github.com/z7zmey/php-parser/visitor" "github.com/z7zmey/php-parser/pkg/errors"
"github.com/z7zmey/php-parser/pkg/parser"
"github.com/z7zmey/php-parser/pkg/version"
"github.com/z7zmey/php-parser/pkg/visitor/dumper"
) )
func main() { func main() {
src := []byte(`<? echo "Hello world";`) src := []byte(`<? echo "Hello world";`)
parser := php7.NewParser(src, "7.4") // Error handler
parser.Parse()
for _, e := range parser.GetErrors() { var parserErrors []*errors.Error
fmt.Println(e) errorHandler := func(e *errors.Error) {
parserErrors = append(parserErrors, e)
} }
visitor := visitor.Dumper{ // Parse
Writer: os.Stdout,
Indent: "", rootNode, err := parser.Parse(src, cfg.Config{
Version: &version.Version{Major: 5, Minor: 6},
ErrorHandlerFunc: errorHandler,
})
if err != nil {
log.Fatal("Error:" + err.Error())
} }
rootNode := parser.GetRootNode() // Dump
rootNode.Walk(&visitor)
goDumper := dumper.NewDumper(os.Stdout).
WithTokens().
WithPositions()
rootNode.Accept(goDumper)
} }
``` ```
@ -68,14 +82,13 @@ Roadmap
------- -------
- Control Flow Graph (CFG) - Control Flow Graph (CFG)
- PhpDocComment parser - PHP8
- Stabilize api
Install Install
------- -------
``` ```
go get github.com/z7zmey/php-parser go get github.com/z7zmey/php-parser/cmd/php-parser
``` ```
CLI CLI
@ -85,16 +98,14 @@ CLI
php-parser [flags] <path> ... php-parser [flags] <path> ...
``` ```
| flag | type | description | | flag | type | description |
|-------|------|----------------------------------------------| | ------- | ------ | --------------------------------- |
| -p | bool | print filepath | | -p | bool | print filepath |
| -d |string| dump format: [custom, go, json, pretty-json] | | -e | bool | print errors |
| -r | bool | resolve names | | -d | bool | dump in golang format |
| -ff | bool | parse and show free floating strings | | -r | bool | resolve names |
| -prof |string| start profiler: [cpu, mem, trace] | | -prof | string | start profiler: [cpu, mem, trace] |
| -php5 | bool | parse as PHP5 | | -phpver | string | php version (default: 7.4) |
Dump AST to stdout.
Namespace resolver Namespace resolver
------------------ ------------------

54
doc.go
View File

@ -1,54 +0,0 @@
/*
A Parser for PHP written in Go
Features:
* Fully support PHP5 and PHP7 syntax
* Abstract syntax tree representation
* Traversing AST
* Namespace resolver
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 (
"fmt"
"bytes"
"os"
"github.com/z7zmey/php-parser/php7"
"github.com/z7zmey/php-parser/visitor"
)
func main() {
src := bytes.NewBufferString(`<? echo "Hello world";`)
parser := php7.NewParser(src, "example.php")
parser.Parse()
for _, e := range parser.GetErrors() {
fmt.Println(e)
}
visitor := visitor.Dumper{
Writer: os.Stdout,
Indent: "",
Comments: parser.GetComments(),
Positions: parser.GetPositions(),
}
rootNode := parser.GetRootNode()
rootNode.Walk(visitor)
}
*/
package main // import "github.com/z7zmey/php-parser"

50
pkg/parser/doc.go Normal file
View File

@ -0,0 +1,50 @@
/*
A Parser for PHP written in Go
Package usage example:
package main
import (
"log"
"os"
"github.com/z7zmey/php-parser/pkg/cfg"
"github.com/z7zmey/php-parser/pkg/errors"
"github.com/z7zmey/php-parser/pkg/parser"
"github.com/z7zmey/php-parser/pkg/version"
"github.com/z7zmey/php-parser/pkg/visitor/dumper"
)
func main() {
src := []byte(`<? echo "Hello world";`)
// Error handler
var parserErrors []*errors.Error
errorHandler := func(e *errors.Error) {
parserErrors = append(parserErrors, e)
}
// Parse
rootNode, err := parser.Parse(src, cfg.Config{
Version: &version.Version{Major: 5, Minor: 6},
ErrorHandlerFunc: errorHandler,
})
if err != nil {
log.Fatal("Error:" + err.Error())
}
// Dump
goDumper := dumper.NewDumper(os.Stdout).
WithTokens().
WithPositions()
rootNode.Accept(goDumper)
}
*/
package parser