@@ -37,45 +37,58 @@ Usage example
37
37
package main
38
38
39
39
import (
40
- " fmt "
40
+ " log "
41
41
" os"
42
42
43
- " github.com/z7zmey/php-parser/php7"
44
- " github.com/z7zmey/php-parser/visitor"
43
+ " github.com/z7zmey/php-parser/pkg/cfg"
44
+ " github.com/z7zmey/php-parser/pkg/errors"
45
+ " github.com/z7zmey/php-parser/pkg/parser"
46
+ " github.com/z7zmey/php-parser/pkg/version"
47
+ " github.com/z7zmey/php-parser/pkg/visitor/dumper"
45
48
)
46
49
47
50
func main () {
48
51
src := []byte (` <? echo "Hello world";` )
49
52
50
- parser := php7.NewParser (src, " 7.4" )
51
- parser.Parse ()
53
+ // Error handler
52
54
53
- for _ , e := range parser.GetErrors () {
54
- fmt.Println (e)
55
+ var parserErrors []*errors.Error
56
+ errorHandler := func (e *errors.Error ) {
57
+ parserErrors = append (parserErrors, e)
55
58
}
56
59
57
- visitor := visitor.Dumper {
58
- Writer: os.Stdout ,
59
- Indent: " " ,
60
+ // Parse
61
+
62
+ rootNode , err := parser.Parse (src, cfg.Config {
63
+ Version: &version.Version {Major: 5 , Minor: 6 },
64
+ ErrorHandlerFunc: errorHandler,
65
+ })
66
+
67
+ if err != nil {
68
+ log.Fatal (" Error:" + err.Error ())
60
69
}
61
70
62
- rootNode := parser.GetRootNode ()
63
- rootNode.Walk (&visitor)
71
+ // Dump
72
+
73
+ goDumper := dumper.NewDumper (os.Stdout ).
74
+ WithTokens ().
75
+ WithPositions ()
76
+
77
+ rootNode.Accept (goDumper)
64
78
}
65
79
```
66
80
67
81
Roadmap
68
82
-------
69
83
70
84
- Control Flow Graph (CFG)
71
- - PhpDocComment parser
72
- - Stabilize api
85
+ - PHP8
73
86
74
87
Install
75
88
-------
76
89
77
90
```
78
- go get github.com/z7zmey/php-parser
91
+ go get github.com/z7zmey/php-parser/cmd/php-parser
79
92
```
80
93
81
94
CLI
85
98
php-parser [flags] <path> ...
86
99
```
87
100
88
- | flag | type | description |
89
- | -------| ------| ----------------------------------------------|
90
- | -p | bool | print filepath |
91
- | -d | string| dump format: [ custom, go, json, pretty-json] |
92
- | -r | bool | resolve names |
93
- | -ff | bool | parse and show free floating strings |
94
- | -prof | string| start profiler: [ cpu, mem, trace] |
95
- | -php5 | bool | parse as PHP5 |
96
-
97
- Dump AST to stdout.
101
+ | flag | type | description |
102
+ | ------- | ------ | --------------------------------- |
103
+ | -p | bool | print filepath |
104
+ | -e | bool | print errors |
105
+ | -d | bool | dump in golang format |
106
+ | -r | bool | resolve names |
107
+ | -prof | string | start profiler: [ cpu, mem, trace] |
108
+ | -phpver | string | php version (default: 7.4) |
98
109
99
110
Namespace resolver
100
111
------------------
0 commit comments