diff --git a/node/expr/const_fetch.go b/node/expr/const_fetch.go new file mode 100644 index 0000000..06e9d08 --- /dev/null +++ b/node/expr/const_fetch.go @@ -0,0 +1,29 @@ +package expr + +import ( + "fmt" + "io" + + "github.com/z7zmey/php-parser/node" +) + +type ConstFetch struct { + node.SimpleNode + name node.Node +} + +func NewConstFetch(name node.Node) node.Node { + return ConstFetch{ + node.SimpleNode{Name: "ConstFetch", Attributes: make(map[string]string)}, + name, + } +} + +func (n ConstFetch) Print(out io.Writer, indent string) { + fmt.Fprintf(out, "\n%v%v [- -]", indent, n.Name) + + if n.name != nil { + fmt.Fprintf(out, "\n%vname:", indent+" ") + n.name.Print(out, indent+" ") + } +} diff --git a/parser/parser.go b/parser/parser.go index 2ee66ad..b4b62fb 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -4506,7 +4506,7 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line parser/parser.y:981 { - yyVAL.node = node.NewSimpleNode("Const").Append(yyDollar[1].node) + yyVAL.node = expr.NewConstFetch(yyDollar[1].node) } case 412: yyDollar = yyS[yypt-3 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index 9da69b4..992750a 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -978,7 +978,7 @@ scalar: ; constant: - name { $$ = node.NewSimpleNode("Const").Append($1) } + name { $$ = expr.NewConstFetch($1) } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = expr.NewClassConstFetch($1, $3) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = expr.NewClassConstFetch($1, $3) }