From 92688ac8d2e7d28885f861b4bf9e33b7f9cca2b7 Mon Sep 17 00:00:00 2001 From: vadim Date: Fri, 8 Dec 2017 12:01:52 +0200 Subject: [PATCH] label node --- node/stmt/label.go | 25 +++++++++++++++++++++++++ parser/parser.go | 2 +- parser/parser.y | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 node/stmt/label.go diff --git a/node/stmt/label.go b/node/stmt/label.go new file mode 100644 index 0000000..14f1db3 --- /dev/null +++ b/node/stmt/label.go @@ -0,0 +1,25 @@ +package stmt + +import ( + "fmt" + "io" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/token" +) + +type Label struct { + node.SimpleNode + token token.Token +} + +func NewLabel(token token.Token) node.Node { + return Label{ + node.SimpleNode{Name: "Label", Attributes: make(map[string]string)}, + token, + } +} + +func (n Label) Print(out io.Writer, indent string) { + fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.Name, n.token.StartLine, n.token.EndLine, n.token.Value) +} diff --git a/parser/parser.go b/parser/parser.go index b40b8a7..725892d 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -2939,7 +2939,7 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line parser/parser.y:403 { - yyVAL.node = node.NewSimpleNode("Label").Attribute("name", yyDollar[1].token.String()) + yyVAL.node = stmt.NewLabel(yyDollar[1].token) } case 153: yyDollar = yyS[yypt-0 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index a409569..0cbb36a 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -400,7 +400,7 @@ statement: } | T_THROW expr ';' { $$ = node.NewSimpleNode("Throw").Append($2) } | T_GOTO T_STRING ';' { $$ = stmt.NewGoto($1, $2) } - | T_STRING ':' { $$ = node.NewSimpleNode("Label").Attribute("name", $1.String()) } + | T_STRING ':' { $$ = stmt.NewLabel($1) } catch_list: /* empty */ { $$ = []node.Node{} }