From cf084b5893de9bd39333d37bde53e4ea1768bd63 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Sat, 16 Dec 2017 22:14:26 +0200 Subject: [PATCH] class_const_fetch node --- node/expr/class_const_fetch.go | 33 +++++++++++++++++++++++++++++++++ parser/parser.go | 4 ++-- parser/parser.y | 4 ++-- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 node/expr/class_const_fetch.go diff --git a/node/expr/class_const_fetch.go b/node/expr/class_const_fetch.go new file mode 100644 index 0000000..9028a24 --- /dev/null +++ b/node/expr/class_const_fetch.go @@ -0,0 +1,33 @@ +package expr + +import ( + "fmt" + "io" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/token" +) + +type ClassConstFetch struct { + node.SimpleNode + class node.Node + name token.Token +} + +func NewClassConstFetch(class node.Node, name token.Token) node.Node { + return ClassConstFetch{ + node.SimpleNode{Name: "ClassConstFetch", Attributes: make(map[string]string)}, + class, + name, + } +} + +func (n ClassConstFetch) Print(out io.Writer, indent string) { + fmt.Fprintf(out, "\n%v%v [- -]", indent, n.Name) + fmt.Fprintf(out, "\n%vname: %q", indent+" ", n.name) + + if n.class != nil { + fmt.Fprintf(out, "\n%vclass:", indent+" ") + n.class.Print(out, indent+" ") + } +} diff --git a/parser/parser.go b/parser/parser.go index 2ce033f..248d2e8 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -4522,13 +4522,13 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:993 { - yyVAL.node = node.NewSimpleNode("Const").Append(yyDollar[1].node).Attribute("value", yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, yyDollar[3].token) } case 413: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:995 { - yyVAL.node = node.NewSimpleNode("Const").Append(yyDollar[1].node).Attribute("value", yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, yyDollar[3].token) } case 414: yyDollar = yyS[yypt-1 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index efff95e..919c387 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -990,9 +990,9 @@ scalar: constant: name { $$ = node.NewSimpleNode("Const").Append($1) } - | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = node.NewSimpleNode("Const").Append($1).Attribute("value", $3.Value) } + | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = expr.NewClassConstFetch($1, $3) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier - { $$ = node.NewSimpleNode("Const").Append($1).Attribute("value", $3.Value) } + { $$ = expr.NewClassConstFetch($1, $3) } ; expr: