From 7e07f1ca26cb5e62ff41e838d4b072018d40c5a8 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Wed, 13 May 2020 20:18:53 +0300 Subject: [PATCH] refactor php5 --- internal/php5/parser.go | 104 +- internal/php5/php5.go | Bin 348627 -> 351465 bytes internal/php5/php5.y | 4207 +++-- internal/php5/php5_bench_test.go | 2 +- internal/php5/php5_test.go | 24628 +++++++++++++++++------------ internal/php7/php7.go | Bin 287586 -> 288574 bytes 6 files changed, 16494 insertions(+), 12447 deletions(-) diff --git a/internal/php5/parser.go b/internal/php5/parser.go index 311e544..060be97 100644 --- a/internal/php5/parser.go +++ b/internal/php5/parser.go @@ -1,15 +1,14 @@ package php5 import ( - "github.com/z7zmey/php-parser/freefloating" - "github.com/z7zmey/php-parser/node" - "strings" + "bytes" "github.com/z7zmey/php-parser/internal/positionbuilder" + "github.com/z7zmey/php-parser/internal/scanner" "github.com/z7zmey/php-parser/pkg/ast" "github.com/z7zmey/php-parser/pkg/errors" "github.com/z7zmey/php-parser/pkg/position" - "github.com/z7zmey/php-parser/scanner" + "github.com/z7zmey/php-parser/pkg/token" ) func (lval *yySymType) Token(t *scanner.Token) { @@ -56,7 +55,7 @@ func (l *Parser) Error(msg string) { } func (l *Parser) WithTokens() { - l.Lexer.SetWithFreeFloating(true) + l.Lexer.SetWithTokens(true) } // Parse the php7 Parser entrypoint @@ -83,14 +82,14 @@ func (l *Parser) GetErrors() []*errors.Error { // helpers -func lastNode(nn []node.Node) node.Node { +func lastNode(nn []ast.Vertex) ast.Vertex { if len(nn) == 0 { return nil } return nn[len(nn)-1] } -func firstNode(nn []node.Node) node.Node { +func firstNode(nn []ast.Vertex) ast.Vertex { return nn[0] } @@ -98,20 +97,20 @@ func isDollar(r rune) bool { return r == '$' } -func (l *Parser) MoveFreeFloating(src node.Node, dst node.Node) { +func (l *Parser) MoveFreeFloating(src ast.Vertex, dst ast.Vertex) { if l.Lexer.GetWithFreeFloating() == false { return } - if src.GetFreeFloating() == nil { + if src.GetNode().Tokens == nil { return } - l.setFreeFloating(dst, freefloating.Start, (*src.GetFreeFloating())[freefloating.Start]) - delete((*src.GetFreeFloating()), freefloating.Start) + l.setFreeFloating(dst, token.Start, src.GetNode().Tokens[token.Start]) + delete(src.GetNode().Tokens, token.Start) } -func (l *Parser) setFreeFloating(dst node.Node, p freefloating.Position, strings []freefloating.String) { +func (l *Parser) setFreeFloating(dst ast.Vertex, p token.Position, strings []token.Token) { if l.Lexer.GetWithFreeFloating() == false { return } @@ -120,100 +119,65 @@ func (l *Parser) setFreeFloating(dst node.Node, p freefloating.Position, strings return } - dstCollection := dst.GetFreeFloating() + dstCollection := &dst.GetNode().Tokens if *dstCollection == nil { - *dstCollection = make(freefloating.Collection) + *dstCollection = make(token.Collection) } (*dstCollection)[p] = strings } -func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []freefloating.String { +func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []token.Token { if l.Lexer.GetWithFreeFloating() == false { - return []freefloating.String{} + return []token.Token{} } - return t.GetFreeFloatingToken() + tokens := make([]token.Token, len(t.Tokens)) + copy(tokens, t.Tokens) + + return tokens } -func (l *Parser) addDollarToken(v node.Node) { +func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.Vertex) { if l.Lexer.GetWithFreeFloating() == false { return } - l.setFreeFloating(v, freefloating.Dollar, []freefloating.String{ - { - StringType: freefloating.TokenType, - Value: "$", - Position: &position.Position{ - StartLine: v.GetPosition().StartLine, - EndLine: v.GetPosition().StartLine, - StartPos: v.GetPosition().StartPos, - EndPos: v.GetPosition().StartPos + 1, - }, - }, - }) -} - -func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { - if l.Lexer.GetWithFreeFloating() == false { - return - } - - semiColon := (*prevNode.GetFreeFloating())[freefloating.SemiColon] - delete((*prevNode.GetFreeFloating()), freefloating.SemiColon) + semiColon := prevNode.GetNode().Tokens[token.SemiColon] + delete(prevNode.GetNode().Tokens, token.SemiColon) if len(semiColon) == 0 { return } - p := semiColon[0].Position if semiColon[0].Value[0] == ';' { - l.setFreeFloating(prevNode, freefloating.SemiColon, []freefloating.String{ + l.setFreeFloating(prevNode, token.SemiColon, []token.Token{ { - StringType: freefloating.TokenType, - Value: ";", - Position: &position.Position{ - StartLine: p.StartLine, - EndLine: p.StartLine, - StartPos: p.StartPos, - EndPos: p.StartPos + 1, - }, + ID: token.ID(';'), + Value: semiColon[0].Value[0:1], }, }) } vlen := len(semiColon[0].Value) tlen := 2 - if strings.HasSuffix(semiColon[0].Value, "?>\n") { + if bytes.HasSuffix(semiColon[0].Value, []byte("?>\n")) { tlen = 3 } - phpCloseTag := []freefloating.String{} + phpCloseTag := []token.Token{} if vlen-tlen > 1 { - phpCloseTag = append(phpCloseTag, freefloating.String{ - StringType: freefloating.WhiteSpaceType, - Value: semiColon[0].Value[1 : vlen-tlen], - Position: &position.Position{ - StartLine: p.StartLine, - EndLine: p.EndLine, - StartPos: p.StartPos + 1, - EndPos: p.EndPos - tlen, - }, + phpCloseTag = append(phpCloseTag, token.Token{ + ID: token.T_WHITESPACE, + Value: semiColon[0].Value[1 : vlen-tlen], }) } - phpCloseTag = append(phpCloseTag, freefloating.String{ - StringType: freefloating.WhiteSpaceType, - Value: semiColon[0].Value[vlen-tlen:], - Position: &position.Position{ - StartLine: p.EndLine, - EndLine: p.EndLine, - StartPos: p.EndPos - tlen, - EndPos: p.EndPos, - }, + phpCloseTag = append(phpCloseTag, token.Token{ + ID: T_CLOSE_TAG, + Value: semiColon[0].Value[vlen-tlen:], }) - l.setFreeFloating(htmlNode, freefloating.Start, append(phpCloseTag, (*htmlNode.GetFreeFloating())[freefloating.Start]...)) + l.setFreeFloating(htmlNode, token.Start, append(phpCloseTag, htmlNode.GetNode().Tokens[token.Start]...)) } func (p *Parser) returnTokenToPool(yyDollar []yySymType, yyVAL *yySymType) { diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 8bb529143389ff7306da4c7c6a57bfb985b9dbb3..0b7071c7ed8af7138587147591722e79b8bc60c7 100644 GIT binary patch literal 351465 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 B9*6({ literal 348627 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

XFN!N)$! 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 T6C8hm2i<$${P_>R{o#KApOwaG diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 9102dd8..fc42063 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -2,33 +2,26 @@ package php5 import ( - "strings" + "bytes" "strconv" - "github.com/z7zmey/php-parser/freefloating" - "github.com/z7zmey/php-parser/scanner" - "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/node/scalar" - "github.com/z7zmey/php-parser/node/name" - "github.com/z7zmey/php-parser/node/stmt" - "github.com/z7zmey/php-parser/node/expr" - "github.com/z7zmey/php-parser/node/expr/assign" - "github.com/z7zmey/php-parser/node/expr/binary" - "github.com/z7zmey/php-parser/node/expr/cast" + "github.com/z7zmey/php-parser/pkg/token" + "github.com/z7zmey/php-parser/internal/scanner" + "github.com/z7zmey/php-parser/pkg/ast" ) %} %union{ - node node.Node + node ast.Vertex token *scanner.Token - list []node.Node + list []ast.Vertex simpleIndirectReference simpleIndirectReference - ClassExtends *stmt.ClassExtends - ClassImplements *stmt.ClassImplements - InterfaceExtends *stmt.InterfaceExtends - ClosureUse *expr.ClosureUse + ClassExtends *ast.StmtClassExtends + ClassImplements *ast.StmtClassImplements + InterfaceExtends *ast.StmtInterfaceExtends + ClosureUse *ast.ExprClosureUse } %type $unk @@ -281,10 +274,10 @@ import ( start: top_statement_list { - yylex.(*Parser).rootNode = node.NewRoot($1) - yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, $1} + yylex.(*Parser).rootNode.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) - yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, token.End, yylex.(*Parser).currentToken.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -293,7 +286,7 @@ start: top_statement_list: top_statement_list top_statement { - if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } @@ -306,7 +299,7 @@ top_statement_list: } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -315,28 +308,28 @@ top_statement_list: namespace_name: T_STRING { - namePart := name.NewNamePart($1.Value) - $$ = []node.Node{namePart} + namePart := &ast.NameNamePart{ast.Node{}, $1.Value} + $$ = []ast.Vertex{namePart} // save position - namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + namePart.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | namespace_name T_NS_SEPARATOR T_STRING { - namePart := name.NewNamePart($3.Value) + namePart := &ast.NameNamePart{ast.Node{}, $3.Value} $$ = append($1, namePart) // save position - namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + namePart.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(namePart, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -352,131 +345,131 @@ top_statement: } | statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_HALT_COMPILER '(' ')' ';' { - $$ = stmt.NewHaltCompiler() + $$ = &ast.StmtHaltCompiler{ast.Node{}, } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.HaltCompiller, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.OpenParenthesisToken, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.CloseParenthesisToken, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE namespace_name ';' { - name := name.NewName($2) - $$ = stmt.NewNamespace(name, nil) + name := &ast.NameName{ast.Node{}, $2} + $$ = &ast.StmtNamespace{ast.Node{}, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE namespace_name '{' top_statement_list '}' { - name := name.NewName($2) - $$ = stmt.NewNamespace(name, $4) + name := &ast.NameName{ast.Node{}, $2} + $$ = &ast.StmtNamespace{ast.Node{}, name, $4} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $5.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $5.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE '{' top_statement_list '}' { - $$ = stmt.NewNamespace(nil, $3) + $$ = &ast.StmtNamespace{ast.Node{}, nil, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE use_declarations ';' { - $$ = stmt.NewUseList(nil, $2) + $$ = &ast.StmtUseList{ast.Node{}, nil, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE T_FUNCTION use_function_declarations ';' { - useType := node.NewIdentifier($2.Value) - $$ = stmt.NewUseList(useType, $3) + useType := &ast.Identifier{ast.Node{}, $2.Value} + $$ = &ast.StmtUseList{ast.Node{}, useType, $3} // save position - useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + useType.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(useType, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE T_CONST use_const_declarations ';' { - useType := node.NewIdentifier($2.Value) - $$ = stmt.NewUseList(useType, $3) + useType := &ast.Identifier{ast.Node{}, $2.Value} + $$ = &ast.StmtUseList{ast.Node{}, useType, $3} // save position - useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + useType.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(useType, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -485,11 +478,11 @@ top_statement: $$ = $1 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -501,13 +494,13 @@ use_declarations: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | use_declaration { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -516,12 +509,12 @@ use_declarations: use_declaration: namespace_name { - name := name.NewName($1) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -530,55 +523,55 @@ use_declaration: } | namespace_name T_AS T_STRING { - name := name.NewName($1) - alias := node.NewIdentifier($3.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $1} + alias := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - name := name.NewName($2) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $2} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name T_AS T_STRING { - name := name.NewName($2) - alias := node.NewIdentifier($4.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $2} + alias := &ast.Identifier{ast.Node{}, $4.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -590,13 +583,13 @@ use_function_declarations: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | use_function_declaration { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -605,12 +598,12 @@ use_function_declarations: use_function_declaration: namespace_name { - name := name.NewName($1) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -619,55 +612,55 @@ use_function_declaration: } | namespace_name T_AS T_STRING { - name := name.NewName($1) - alias := node.NewIdentifier($3.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $1} + alias := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - name := name.NewName($2) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $2} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name T_AS T_STRING { - name := name.NewName($2) - alias := node.NewIdentifier($4.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $2} + alias := &ast.Identifier{ast.Node{}, $4.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -679,13 +672,13 @@ use_const_declarations: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | use_const_declaration { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -694,12 +687,12 @@ use_const_declarations: use_const_declaration: namespace_name { - name := name.NewName($1) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -708,55 +701,55 @@ use_const_declaration: } | namespace_name T_AS T_STRING { - name := name.NewName($1) - alias := node.NewIdentifier($3.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $1} + alias := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - name := name.NewName($2) - $$ = stmt.NewUse(nil, name, nil) + name := &ast.NameName{ast.Node{}, $2} + $$ = &ast.StmtUse{ast.Node{}, nil, name, nil} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name T_AS T_STRING { - name := name.NewName($2) - alias := node.NewIdentifier($4.Value) - $$ = stmt.NewUse(nil, name, alias) + name := &ast.NameName{ast.Node{}, $2} + alias := &ast.Identifier{ast.Node{}, $4.Value} + $$ = &ast.StmtUse{ast.Node{}, nil, name, alias} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -765,41 +758,41 @@ use_const_declaration: constant_declaration: constant_declaration ',' T_STRING '=' static_scalar { - name := node.NewIdentifier($3.Value) - constant := stmt.NewConstant(name, $5, "") - constList := $1.(*stmt.ConstList) + name := &ast.Identifier{ast.Node{}, $3.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $5} + constList := $1.(*ast.StmtConstList) lastConst := lastNode(constList.Consts) constList.Consts = append(constList.Consts, constant) $$ = $1 // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, constList.Consts)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, constList.Consts) // save comments - yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(lastConst, token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONST T_STRING '=' static_scalar { - name := node.NewIdentifier($2.Value) - constant := stmt.NewConstant(name, $4, "") - constList := []node.Node{constant} - $$ = stmt.NewConstList(constList) + name := &ast.Identifier{ast.Node{}, $2.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $4} + constList := []ast.Vertex{constant} + $$ = &ast.StmtConstList{ast.Node{}, constList} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, constList)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, constList) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -808,7 +801,7 @@ constant_declaration: inner_statement_list: inner_statement_list inner_statement { - if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } @@ -821,7 +814,7 @@ inner_statement_list: } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -838,35 +831,35 @@ inner_statement: } | statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_HALT_COMPILER '(' ')' ';' { - $$ = stmt.NewHaltCompiler() + $$ = &ast.StmtHaltCompiler{ast.Node{}, } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.HaltCompiller, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.OpenParenthesisToken, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.CloseParenthesisToken, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -876,22 +869,22 @@ inner_statement: statement: unticked_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_STRING ':' { - label := node.NewIdentifier($1.Value) - $$ = stmt.NewLabel(label) + label := &ast.Identifier{ast.Node{}, $1.Value} + $$ = &ast.StmtLabel{ast.Node{}, label} // save position - label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + label.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Label, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Label, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -900,119 +893,119 @@ statement: unticked_statement: '{' inner_statement_list '}' { - $$ = stmt.NewStmtList($2) + $$ = &ast.StmtStmtList{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_IF parenthesis_expr statement elseif_list else_single { - $$ = stmt.NewIf($2, $3, $4, $5) + $$ = &ast.StmtIf{ast.Node{}, $2, $3, $4, $5} // save position if $5 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5) } else if len($4) > 0 { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $4) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) } // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.If, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_IF parenthesis_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';' { - stmts := stmt.NewStmtList($4) - $$ = stmt.NewAltIf($2, stmts, $5, $6) + stmts := &ast.StmtStmtList{ast.Node{}, $4} + $$ = &ast.StmtAltIf{ast.Node{}, $2, stmts, $5, $6} // save position - stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + stmts.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.If, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) } - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $8.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($8)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $8.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($8)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_WHILE parenthesis_expr while_statement { switch n := $3.(type) { - case *stmt.While : + case *ast.StmtWhile : n.Cond = $2 - case *stmt.AltWhile : + case *ast.StmtAltWhile : n.Cond = $2 } $$ = $3 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.While, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DO statement T_WHILE parenthesis_expr ';' { - $$ = stmt.NewDo($2, $4) + $$ = &ast.StmtDo{ast.Node{}, $2, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) - if len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$4.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$4.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) + if len($4.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.While, $4.GetNode().Tokens[token.OpenParenthesisToken][:len($4.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($4.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$4.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$4.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$4.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$4.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($4.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.GetNode().Tokens[token.CloseParenthesisToken][:len($4.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($4.GetNode().Tokens, token.CloseParenthesisToken) } - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement { switch n := $9.(type) { - case *stmt.For : + case *ast.StmtFor : n.Init = $3 n.Cond = $5 n.Loop = $7 - case *stmt.AltFor : + case *ast.StmtAltFor : n.Init = $3 n.Cond = $5 n.Loop = $7 @@ -1021,23 +1014,23 @@ unticked_statement: $$ = $9 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.For, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.InitExpr, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.CondExpr, $6.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.IncExpr, $8.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.For, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.InitExpr, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.CondExpr, $6.Tokens) + yylex.(*Parser).setFreeFloating($$, token.IncExpr, $8.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_SWITCH parenthesis_expr switch_case_list { switch n := $3.(type) { - case *stmt.Switch: + case *ast.StmtSwitch: n.Cond = $2 - case *stmt.AltSwitch: + case *ast.StmtAltSwitch: n.Cond = $2 default: panic("unexpected node type") @@ -1046,213 +1039,213 @@ unticked_statement: $$ = $3 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Switch, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Switch, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_BREAK ';' { - $$ = stmt.NewBreak(nil) + $$ = &ast.StmtBreak{ast.Node{}, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_BREAK expr ';' { - $$ = stmt.NewBreak($2) + $$ = &ast.StmtBreak{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONTINUE ';' { - $$ = stmt.NewContinue(nil) + $$ = &ast.StmtContinue{ast.Node{}, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONTINUE expr ';' { - $$ = stmt.NewContinue($2) + $$ = &ast.StmtContinue{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_RETURN ';' { - $$ = stmt.NewReturn(nil) + $$ = &ast.StmtReturn{ast.Node{}, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_RETURN expr_without_variable ';' { - $$ = stmt.NewReturn($2) + $$ = &ast.StmtReturn{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_RETURN variable ';' { - $$ = stmt.NewReturn($2) + $$ = &ast.StmtReturn{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | yield_expr ';' { - $$ = stmt.NewExpression($1) + $$ = &ast.StmtExpression{ast.Node{}, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_GLOBAL global_var_list ';' { - $$ = stmt.NewGlobal($2) + $$ = &ast.StmtGlobal{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.VarList, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_STATIC static_var_list ';' { - $$ = stmt.NewStatic($2) + $$ = &ast.StmtStatic{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.VarList, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ECHO echo_expr_list ';' { - $$ = stmt.NewEcho($2) + $$ = &ast.StmtEcho{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INLINE_HTML { - $$ = stmt.NewInlineHtml($1.Value) + $$ = &ast.StmtInlineHtml{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr ';' { - $$ = stmt.NewExpression($1) + $$ = &ast.StmtExpression{ast.Node{}, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_UNSET '(' unset_variables ')' ';' { - $$ = stmt.NewUnset($3) + $$ = &ast.StmtUnset{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Unset, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Unset, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.VarList, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.CloseParenthesisToken, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1260,39 +1253,39 @@ unticked_statement: { if $6 == nil { switch n := $8.(type) { - case *stmt.Foreach : + case *ast.StmtForeach : n.Expr = $3 - n.Variable = $5 - case *stmt.AltForeach : + n.Var = $5 + case *ast.StmtAltForeach : n.Expr = $3 - n.Variable = $5 + n.Var = $5 } } else { switch n := $8.(type) { - case *stmt.Foreach : + case *ast.StmtForeach : n.Expr = $3 n.Key = $5 - n.Variable = $6 - case *stmt.AltForeach : + n.Var = $6 + case *ast.StmtAltForeach : n.Expr = $3 n.Key = $5 - n.Variable = $6 + n.Var = $6 } } - + $$ = $8 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Foreach, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) if $6 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) + yylex.(*Parser).setFreeFloating($$, token.Key, $6.GetNode().Tokens[token.Key]); delete($6.GetNode().Tokens, token.Key) } - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $7.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1300,116 +1293,116 @@ unticked_statement: { if $6 == nil { switch n := $8.(type) { - case *stmt.Foreach : + case *ast.StmtForeach : n.Expr = $3 - n.Variable = $5 - case *stmt.AltForeach : + n.Var = $5 + case *ast.StmtAltForeach : n.Expr = $3 - n.Variable = $5 + n.Var = $5 } } else { switch n := $8.(type) { - case *stmt.Foreach : + case *ast.StmtForeach : n.Expr = $3 n.Key = $5 - n.Variable = $6 - case *stmt.AltForeach : + n.Var = $6 + case *ast.StmtAltForeach : n.Expr = $3 n.Key = $5 - n.Variable = $6 + n.Var = $6 } } - + // save position $$ = $8 - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Foreach, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) if $6 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) + yylex.(*Parser).setFreeFloating($$, token.Key, $6.GetNode().Tokens[token.Key]); delete($6.GetNode().Tokens, token.Key) } - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $7.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DECLARE '(' declare_list ')' declare_statement { $$ = $5 - $$.(*stmt.Declare).Consts = $3 + $$.(*ast.StmtDeclare).Consts = $3 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Declare, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Declare, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ConstList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ';' { - $$ = stmt.NewNop() + $$ = &ast.StmtNop{ast.Node{}, } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_TRY '{' inner_statement_list '}' catch_statement finally_statement { - $$ = stmt.NewTry($3, $5, $6) + $$ = &ast.StmtTry{ast.Node{}, $3, $5, $6} // save position if $6 == nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $5)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $5) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6) } // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Try, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Try, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_THROW expr ';' { - $$ = stmt.NewThrow($2) + $$ = &ast.StmtThrow{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_GOTO T_STRING ';' { - label := node.NewIdentifier($2.Value) - $$ = stmt.NewGoto(label) + label := &ast.Identifier{ast.Node{}, $2.Value} + $$ = &ast.StmtGoto{ast.Node{}, label} // save position - label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + label.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(label, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Label, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(label, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Label, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1418,30 +1411,29 @@ unticked_statement: catch_statement: /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' additional_catches { - identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) - variable := expr.NewVariable(identifier) - catchNode := stmt.NewCatch([]node.Node{$3}, variable, $7) - $$ = append([]node.Node{catchNode}, $9...) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($4.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + catchNode := &ast.StmtCatch{ast.Node{}, []ast.Vertex{$3}, variable, $7} + $$ = append([]ast.Vertex{catchNode}, $9...) // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - catchNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + catchNode.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8) // save comments - yylex.(*Parser).setFreeFloating(catchNode, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(catchNode, freefloating.Catch, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating(catchNode, freefloating.Var, $5.FreeFloating) - yylex.(*Parser).setFreeFloating(catchNode, freefloating.Cond, $6.FreeFloating) - yylex.(*Parser).setFreeFloating(catchNode, freefloating.Stmts, $8.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(catchNode, token.Catch, $2.Tokens) + yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens) + yylex.(*Parser).setFreeFloating(catchNode, token.Var, $5.Tokens) + yylex.(*Parser).setFreeFloating(catchNode, token.Cond, $6.Tokens) + yylex.(*Parser).setFreeFloating(catchNode, token.Stmts, $8.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1450,21 +1442,21 @@ catch_statement: finally_statement: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FINALLY '{' inner_statement_list '}' { - $$ = stmt.NewFinally($3) + $$ = &ast.StmtFinally{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Finally, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Finally, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1473,13 +1465,13 @@ finally_statement: additional_catches: non_empty_additional_catches { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1488,13 +1480,13 @@ additional_catches: non_empty_additional_catches: additional_catch { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_additional_catches additional_catch { - $$ = append($1, $2) + $$ = append($1, $2) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1503,23 +1495,22 @@ non_empty_additional_catches: additional_catch: T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' { - identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) - variable := expr.NewVariable(identifier) - $$ = stmt.NewCatch([]node.Node{$3}, variable, $7) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($4.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = &ast.StmtCatch{ast.Node{}, []ast.Vertex{$3}, variable, $7} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Catch, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $6.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $8.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Catch, $2.Tokens) + yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cond, $6.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $8.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1528,7 +1519,7 @@ additional_catch: unset_variables: unset_variable { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1537,7 +1528,7 @@ unset_variables: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1546,7 +1537,7 @@ unset_variables: unset_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1555,7 +1546,7 @@ unset_variable: function_declaration_statement: unticked_function_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1564,7 +1555,7 @@ function_declaration_statement: class_declaration_statement: unticked_class_declaration_statement { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1595,25 +1586,25 @@ is_variadic: unticked_function_declaration_statement: function is_reference T_STRING '(' parameter_list ')' '{' inner_statement_list '}' { - name := node.NewIdentifier($3.Value) - $$ = stmt.NewFunction(name, $2 != nil, $5, nil, $8, "") + name := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.StmtFunction{ast.Node{}, $2 != nil, name, $5, nil, $8} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) if $2 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $2.Tokens) + yylex.(*Parser).setFreeFloating(name, token.Start, $3.Tokens) } else { - yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.Start, $3.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ParamList, $6.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Params, $7.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $9.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ParamList, $6.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Params, $7.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1622,15 +1613,15 @@ unticked_function_declaration_statement: unticked_class_declaration_statement: class_entry_type T_STRING extends_from implements_list '{' class_statement_list '}' { - name := node.NewIdentifier($2.Value) + name := &ast.Identifier{ast.Node{}, $2.Value} switch n := $1.(type) { - case *stmt.Class : + case *ast.StmtClass : n.ClassName = name n.Stmts = $6 n.Extends = $3 n.Implements = $4 - case *stmt.Trait : + case *ast.StmtTrait : // TODO: is it possible that trait extend or implement n.TraitName = name n.Stmts = $6 @@ -1638,30 +1629,30 @@ unticked_class_declaration_statement: $$ = $1 // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7) // save comments - yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) + yylex.(*Parser).setFreeFloating(name, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Name, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | interface_entry T_STRING interface_extends_list '{' class_statement_list '}' { - name := node.NewIdentifier($2.Value) - $$ = stmt.NewInterface(name, $3, $5, "") + name := &ast.Identifier{ast.Node{}, $2.Value} + $$ = &ast.StmtInterface{ast.Node{}, name, $3, $5} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(name, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Name, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1671,55 +1662,55 @@ unticked_class_declaration_statement: class_entry_type: T_CLASS { - $$ = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") + $$ = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ABSTRACT T_CLASS { - classModifier := node.NewIdentifier($1.Value) - $$ = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + classModifier := &ast.Identifier{ast.Node{}, $1.Value} + $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + classModifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_TRAIT { - $$ = stmt.NewTrait(nil, nil, "") + $$ = &ast.StmtTrait{ast.Node{}, nil, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FINAL T_CLASS { - classModifier := node.NewIdentifier($1.Value) - $$ = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + classModifier := &ast.Identifier{ast.Node{}, $1.Value} + $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + classModifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1728,19 +1719,19 @@ class_entry_type: extends_from: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EXTENDS fully_qualified_class_name { - $$ = stmt.NewClassExtends($2); + $$ = &ast.StmtClassExtends{ast.Node{}, $2}; // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1756,19 +1747,19 @@ interface_entry: interface_extends_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EXTENDS interface_list { - $$ = stmt.NewInterfaceExtends($2); + $$ = &ast.StmtInterfaceExtends{ast.Node{}, $2}; // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1777,19 +1768,19 @@ interface_extends_list: implements_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_IMPLEMENTS interface_list { - $$ = stmt.NewClassImplements($2); + $$ = &ast.StmtClassImplements{ast.Node{}, $2}; // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1798,7 +1789,7 @@ implements_list: interface_list: fully_qualified_class_name { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1807,7 +1798,7 @@ interface_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1816,7 +1807,7 @@ interface_list: foreach_optional_arg: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1825,7 +1816,7 @@ foreach_optional_arg: $$ = $2 // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Key, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Key, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1834,33 +1825,33 @@ foreach_optional_arg: foreach_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' variable { - $$ = expr.NewReference($2) + $$ = &ast.ExprReference{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' assignment_list ')' { - $$ = expr.NewList($3) + $$ = &ast.ExprList{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.List, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.List, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArrayPairList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1869,27 +1860,27 @@ foreach_variable: for_statement: statement { - $$ = stmt.NewFor(nil, nil, nil, $1) + $$ = &ast.StmtFor{ast.Node{}, nil, nil, nil, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' inner_statement_list T_ENDFOR ';' { - stmtList := stmt.NewStmtList($2) - $$ = stmt.NewAltFor(nil, nil, nil, stmtList) + stmtList := &ast.StmtStmtList{ast.Node{}, $2} + $$ = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} // save position - stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1898,27 +1889,27 @@ for_statement: foreach_statement: statement { - $$ = stmt.NewForeach(nil, nil, nil, $1) + $$ = &ast.StmtForeach{ast.Node{}, nil, nil, nil, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' inner_statement_list T_ENDFOREACH ';' { - stmtList := stmt.NewStmtList($2) - $$ = stmt.NewAltForeach(nil, nil, nil, stmtList) + stmtList := &ast.StmtStmtList{ast.Node{}, $2} + $$ = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} // save position - stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1928,27 +1919,27 @@ foreach_statement: declare_statement: statement { - $$ = stmt.NewDeclare(nil, $1, false) + $$ = &ast.StmtDeclare{ast.Node{}, false, nil, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' inner_statement_list T_ENDDECLARE ';' { - stmtList := stmt.NewStmtList($2) - $$ = stmt.NewDeclare(nil, stmtList, true) + stmtList := &ast.StmtStmtList{ast.Node{}, $2} + $$ = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} // save position - stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1958,34 +1949,34 @@ declare_statement: declare_list: T_STRING '=' static_scalar { - name := node.NewIdentifier($1.Value) - constant := stmt.NewConstant(name, $3, "") - $$ = []node.Node{constant} + name := &ast.Identifier{ast.Node{}, $1.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $3} + $$ = []ast.Vertex{constant} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | declare_list ',' T_STRING '=' static_scalar { - name := node.NewIdentifier($3.Value) - constant := stmt.NewConstant(name, $5, "") + name := &ast.Identifier{ast.Node{}, $3.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $5} $$ = append($1, constant) // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1995,68 +1986,68 @@ declare_list: switch_case_list: '{' case_list '}' { - caseList := stmt.NewCaseList($2) - $$ = stmt.NewSwitch(nil, caseList) + caseList := &ast.StmtCaseList{ast.Node{}, $2} + $$ = &ast.StmtSwitch{ast.Node{}, nil, caseList} // save position - caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + caseList.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListEnd, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '{' ';' case_list '}' { - caseList := stmt.NewCaseList($3) - $$ = stmt.NewSwitch(nil, caseList) + caseList := &ast.StmtCaseList{ast.Node{}, $3} + $$ = &ast.StmtSwitch{ast.Node{}, nil, caseList} // save position - caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + caseList.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListStart, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListEnd, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' case_list T_ENDSWITCH ';' { - caseList := stmt.NewCaseList($2) - $$ = stmt.NewAltSwitch(nil, caseList) + caseList := &ast.StmtCaseList{ast.Node{}, $2} + $$ = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} // save position - caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + caseList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListEnd, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' ';' case_list T_ENDSWITCH ';' { - caseList := stmt.NewCaseList($3) - $$ = stmt.NewAltSwitch(nil, caseList) + caseList := &ast.StmtCaseList{ast.Node{}, $3} + $$ = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} // save position - caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + caseList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListStart, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, token.CaseListEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2066,37 +2057,37 @@ switch_case_list: case_list: /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | case_list T_CASE expr case_separator inner_statement_list { - _case := stmt.NewCase($3, $5) + _case := &ast.StmtCase{ast.Node{}, $3, $5} $$ = append($1, _case) // save position - _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + _case.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5) // save comments - yylex.(*Parser).setFreeFloating(_case, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, $4.FreeFloating) - yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating(_case, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(_case, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloating(_case, token.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | case_list T_DEFAULT case_separator inner_statement_list { - _default := stmt.NewDefault($4) + _default := &ast.StmtDefault{ast.Node{}, $4} $$ = append($1, _default) // save position - _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + _default.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4) // save comments - yylex.(*Parser).setFreeFloating(_default, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(_default, freefloating.Default, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating(_default, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(_default, token.Default, $3.Tokens) + yylex.(*Parser).setFreeFloating(_default, token.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2118,27 +2109,27 @@ case_separator: while_statement: statement { - $$ = stmt.NewWhile(nil, $1) + $$ = &ast.StmtWhile{ast.Node{}, nil, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | ':' inner_statement_list T_ENDWHILE ';' { - stmtList := stmt.NewStmtList($2) - $$ = stmt.NewAltWhile(nil, stmtList) + stmtList := &ast.StmtStmtList{ast.Node{}, $2} + $$ = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} // save position - stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + yylex.(*Parser).setFreeFloating($$, token.Cond, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AltEnd, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2149,25 +2140,25 @@ while_statement: elseif_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | elseif_list T_ELSEIF parenthesis_expr statement { - _elseIf := stmt.NewElseIf($3, $4) + _elseIf := &ast.StmtElseIf{ast.Node{}, $3, $4} $$ = append($1, _elseIf) // save position - _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) + _elseIf.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4) // save comments - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) - if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating(_elseIf, token.Start, $2.Tokens) + if len($3.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, token.ElseIf, $3.GetNode().Tokens[token.OpenParenthesisToken][:len($3.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($3.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*$3.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($3.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, token.Expr, $3.GetNode().Tokens[token.CloseParenthesisToken][:len($3.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($3.GetNode().Tokens, token.CloseParenthesisToken) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2178,29 +2169,29 @@ elseif_list: new_elseif_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | new_elseif_list T_ELSEIF parenthesis_expr ':' inner_statement_list { - stmts := stmt.NewStmtList($5) - _elseIf := stmt.NewAltElseIf($3, stmts) + stmts := &ast.StmtStmtList{ast.Node{}, $5} + _elseIf := &ast.StmtAltElseIf{ast.Node{}, $3, stmts} $$ = append($1, _elseIf) // save position - stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($5)) - _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + stmts.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($5) + _elseIf.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5) // save comments - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) - if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating(_elseIf, token.Start, $2.Tokens) + if len($3.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, token.ElseIf, $3.GetNode().Tokens[token.OpenParenthesisToken][:len($3.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($3.GetNode().Tokens, token.OpenParenthesisToken) } - if len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*$3.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.CloseParenthesisToken) + if len($3.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, token.Expr, $3.GetNode().Tokens[token.CloseParenthesisToken][:len($3.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($3.GetNode().Tokens, token.CloseParenthesisToken) } - yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Cond, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, token.Cond, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2210,19 +2201,19 @@ new_elseif_list: else_single: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ELSE statement { - $$ = stmt.NewElse($2) + $$ = &ast.StmtElse{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2232,22 +2223,22 @@ else_single: new_else_single: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ELSE ':' inner_statement_list { - stmts := stmt.NewStmtList($3) - $$ = stmt.NewAltElse(stmts) + stmts := &ast.StmtStmtList{ast.Node{}, $3} + $$ = &ast.StmtAltElse{ast.Node{}, stmts} // save position - stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - + stmts.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Else, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Else, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2257,13 +2248,13 @@ new_else_single: parameter_list: non_empty_parameter_list { - $$ = $1; + $$ = $1; yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2272,7 +2263,7 @@ parameter_list: non_empty_parameter_list: parameter { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2281,7 +2272,7 @@ non_empty_parameter_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2290,21 +2281,21 @@ non_empty_parameter_list: parameter: optional_class_type is_reference is_variadic T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) - variable := expr.NewVariable(identifier) - $$ = node.NewParameter($1, variable, nil, $2 != nil, $3 != nil) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($4.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = &ast.Parameter{ast.Node{}, $2 != nil, $3 != nil, $1, variable, nil} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) if $1 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) } else if $2 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($2, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($2, $4) } else if $3 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) } // save comments @@ -2312,44 +2303,43 @@ parameter: yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.OptionalType, $2.Tokens) } if $3 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens) // normalize if $3 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $$.GetNode().Tokens[token.Variadic]); delete($$.GetNode().Tokens, token.Variadic) } if $2 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + yylex.(*Parser).setFreeFloating($$, token.OptionalType, $$.GetNode().Tokens[token.Ampersand]); delete($$.GetNode().Tokens, token.Ampersand) } if $1 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) + yylex.(*Parser).setFreeFloating($$, token.Start, $$.GetNode().Tokens[token.OptionalType]); delete($$.GetNode().Tokens, token.OptionalType) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | optional_class_type is_reference is_variadic T_VARIABLE '=' static_scalar { - identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) - variable := expr.NewVariable(identifier) - $$ = node.NewParameter($1, variable, $6, $2 != nil, $3 != nil) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($4.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = &ast.Parameter{ast.Node{}, $2 != nil, $3 != nil, $1, variable, $6} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) if $1 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6) } else if $2 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6) } else if $3 != nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $6)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $6) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6) } // save comments @@ -2357,24 +2347,23 @@ parameter: yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.OptionalType, $2.Tokens) } if $3 != nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens) // normalize if $3 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $$.GetNode().Tokens[token.Variadic]); delete($$.GetNode().Tokens, token.Variadic) } if $2 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + yylex.(*Parser).setFreeFloating($$, token.OptionalType, $$.GetNode().Tokens[token.Ampersand]); delete($$.GetNode().Tokens, token.Ampersand) } if $1 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) + yylex.(*Parser).setFreeFloating($$, token.Start, $$.GetNode().Tokens[token.OptionalType]); delete($$.GetNode().Tokens, token.OptionalType) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2385,37 +2374,37 @@ parameter: optional_class_type: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ARRAY { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CALLABLE { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | fully_qualified_class_name { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2425,42 +2414,42 @@ optional_class_type: function_call_parameter_list: '(' ')' { - $$ = node.NewArgumentList(nil) + $$ = &ast.ArgumentList{ast.Node{}, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArgumentList, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' non_empty_function_call_parameter_list ')' { - $$ = node.NewArgumentList($2) + $$ = &ast.ArgumentList{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArgumentList, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' yield_expr ')' { - arg := node.NewArgument($2, false, false) - $$ = node.NewArgumentList([]node.Node{arg}) + arg := &ast.Argument{ast.Node{}, false, false, $2} + $$ = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}} // save position - arg.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + arg.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArgumentList, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2470,7 +2459,7 @@ function_call_parameter_list: non_empty_function_call_parameter_list: function_call_parameter { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2479,7 +2468,7 @@ non_empty_function_call_parameter_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2488,10 +2477,10 @@ non_empty_function_call_parameter_list: function_call_parameter: expr_without_variable { - $$ = node.NewArgument($1, false, false) + $$ = &ast.Argument{ast.Node{}, false, false, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) @@ -2500,10 +2489,10 @@ function_call_parameter: } | variable { - $$ = node.NewArgument($1, false, false) + $$ = &ast.Argument{ast.Node{}, false, false, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) @@ -2512,25 +2501,25 @@ function_call_parameter: } | '&' w_variable { - $$ = node.NewArgument($2, false, true) + $$ = &ast.Argument{ast.Node{}, false, true, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ELLIPSIS expr { - $$ = node.NewArgument($2, true, false) + $$ = &ast.Argument{ast.Node{}, true, false, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2542,13 +2531,13 @@ global_var_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | global_var { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2558,44 +2547,43 @@ global_var_list: global_var: T_VARIABLE { - name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - $$ = expr.NewVariable(name) + name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken($$) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '$' r_variable { - $$ = expr.NewVariable($2) + $$ = &ast.ExprVariable{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '$' '{' expr '}' { - $$ = expr.NewVariable($3) + $$ = &ast.ExprVariable{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) - yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, token.Start, append($2.Tokens, append(yylex.(*Parser).GetFreeFloatingToken($2), $3.GetNode().Tokens[token.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, token.End, append($3.GetNode().Tokens[token.End], append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2605,77 +2593,73 @@ global_var: static_var_list: static_var_list ',' T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) - variable := expr.NewVariable(identifier) - staticVar := stmt.NewStaticVar(variable, nil) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($3.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + staticVar := &ast.StmtStaticVar{ast.Node{}, variable, nil} $$ = append($1, staticVar) - + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(staticVar, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_var_list ',' T_VARIABLE '=' static_scalar { - identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) - variable := expr.NewVariable(identifier) - staticVar := stmt.NewStaticVar(variable, $5) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($3.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + staticVar := &ast.StmtStaticVar{ast.Node{}, variable, $5} $$ = append($1, staticVar) - + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(staticVar, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(staticVar, token.Var, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - staticVar := stmt.NewStaticVar(variable, nil) - $$ = []node.Node{staticVar} - + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + staticVar := &ast.StmtStaticVar{ast.Node{}, variable, nil} + $$ = []ast.Vertex{staticVar} + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE '=' static_scalar { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - staticVar := stmt.NewStaticVar(variable, $3) - $$ = []node.Node{staticVar} - + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + staticVar := &ast.StmtStaticVar{ast.Node{}, variable, $3} + $$ = []ast.Vertex{staticVar} + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(staticVar, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2685,13 +2669,13 @@ static_var_list: class_statement_list: class_statement_list class_statement { - $$ = append($1, $2) + $$ = append($1, $2) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2701,15 +2685,15 @@ class_statement_list: class_statement: variable_modifiers class_variable_declaration ';' { - $$ = stmt.NewPropertyList($1, nil, $2) + $$ = &ast.StmtPropertyList{ast.Node{}, $1, nil, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + yylex.(*Parser).setFreeFloating($$, token.PropertyList, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2718,11 +2702,11 @@ class_statement: $$ = $1 // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.ConstList, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2734,32 +2718,32 @@ class_statement: } | method_modifiers function is_reference T_STRING '(' parameter_list ')' method_body { - name := node.NewIdentifier($4.Value) - $$ = stmt.NewClassMethod(name, $1, $3 != nil, $6, nil, $8, "") + name := &ast.Identifier{ast.Node{}, $4.Value} + $$ = &ast.StmtClassMethod{ast.Node{}, $3 != nil, name, $1, $6, nil, $8} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) if $1 == nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $8)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $8) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListNodePosition($1, $8)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListNodePosition($1, $8) } // save comments if len($1) > 0 { yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.Tokens) } else { - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $2.Tokens) } if $3 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $4.Tokens) } else { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ParameterList, $7.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2768,13 +2752,13 @@ class_statement: trait_use_statement: T_USE trait_list trait_adaptations { - $$ = stmt.NewTraitUse($2, $3) + $$ = &ast.StmtTraitUse{ast.Node{}, $2, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2783,7 +2767,7 @@ trait_use_statement: trait_list: fully_qualified_class_name { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2792,7 +2776,7 @@ trait_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2801,25 +2785,25 @@ trait_list: trait_adaptations: ';' { - $$ = stmt.NewNop() + $$ = &ast.StmtNop{ast.Node{}, } - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '{' trait_adaptation_list '}' { - $$ = stmt.NewTraitAdaptationList($2) + $$ = &ast.StmtTraitAdaptationList{ast.Node{}, $2} - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.AdaptationList, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2828,13 +2812,13 @@ trait_adaptations: trait_adaptation_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_trait_adaptation_list { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2843,13 +2827,13 @@ trait_adaptation_list: non_empty_trait_adaptation_list: trait_adaptation_statement { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_trait_adaptation_list trait_adaptation_statement { - $$ = append($1, $2) + $$ = append($1, $2) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2861,8 +2845,8 @@ trait_adaptation_statement: $$ = $1; // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.NameList, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.NameList, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2871,8 +2855,8 @@ trait_adaptation_statement: $$ = $1; // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Alias, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Alias, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2881,14 +2865,14 @@ trait_adaptation_statement: trait_precedence: trait_method_reference_fully_qualified T_INSTEADOF trait_reference_list { - $$ = stmt.NewTraitUsePrecedence($1, $3) + $$ = &ast.StmtTraitUsePrecedence{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Ref, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2897,7 +2881,7 @@ trait_precedence: trait_reference_list: fully_qualified_class_name { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2906,7 +2890,7 @@ trait_reference_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2915,21 +2899,21 @@ trait_reference_list: trait_method_reference: T_STRING { - name := node.NewIdentifier($1.Value) - $$ = stmt.NewTraitMethodRef(nil, name) + name := &ast.Identifier{ast.Node{}, $1.Value} + $$ = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference_fully_qualified { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2938,17 +2922,17 @@ trait_method_reference: trait_method_reference_fully_qualified: fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := node.NewIdentifier($3.Value) - $$ = stmt.NewTraitMethodRef($1, target) + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.StmtTraitMethodRef{ast.Node{}, $1, target} // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2957,30 +2941,30 @@ trait_method_reference_fully_qualified: trait_alias: trait_method_reference T_AS trait_modifiers T_STRING { - alias := node.NewIdentifier($4.Value) - $$ = stmt.NewTraitUseAlias($1, $3, alias) + alias := &ast.Identifier{ast.Node{}, $4.Value} + $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, $3, alias} // save position - alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + alias.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Ref, $2.Tokens) + yylex.(*Parser).setFreeFloating(alias, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS member_modifier { - $$ = stmt.NewTraitUseAlias($1, $3, nil) + $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, $3, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Ref, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2989,42 +2973,42 @@ trait_alias: trait_modifiers: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | member_modifier { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; method_body: - ';' /* abstract method */ + ';' /* abstract method */ { - $$ = stmt.NewNop() + $$ = &ast.StmtNop{ast.Node{}, } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '{' inner_statement_list '}' { - $$ = stmt.NewStmtList($2) + $$ = &ast.StmtStmtList{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3033,20 +3017,20 @@ method_body: variable_modifiers: non_empty_member_modifiers { - $$ = $1; + $$ = $1; yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VAR { - modifier := node.NewIdentifier($1.Value) - $$ = []node.Node{modifier} + modifier := &ast.Identifier{ast.Node{}, $1.Value} + $$ = []ast.Vertex{modifier} // save position - modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + modifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(modifier, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3055,13 +3039,13 @@ variable_modifiers: method_modifiers: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_member_modifiers { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3070,13 +3054,13 @@ method_modifiers: non_empty_member_modifiers: member_modifier { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_member_modifiers member_modifier { - $$ = append($1, $2) + $$ = append($1, $2) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3085,73 +3069,73 @@ non_empty_member_modifiers: member_modifier: T_PUBLIC { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_PROTECTED { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_PRIVATE { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_STATIC { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ABSTRACT { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FINAL { - $$ = node.NewIdentifier($1.Value) + $$ = &ast.Identifier{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3160,77 +3144,73 @@ member_modifier: class_variable_declaration: class_variable_declaration ',' T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) - variable := expr.NewVariable(identifier) - property := stmt.NewProperty(variable, nil, "") + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($3.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + property := &ast.StmtProperty{ast.Node{}, variable, nil} $$ = append($1, property) - + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(property, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_variable_declaration ',' T_VARIABLE '=' static_scalar { - identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) - variable := expr.NewVariable(identifier) - property := stmt.NewProperty(variable, $5, "") + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($3.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + property := &ast.StmtProperty{ast.Node{}, variable, $5} $$ = append($1, property) - + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) - + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating(property, freefloating.Var, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(property, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(property, token.Var, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - property := stmt.NewProperty(variable, nil, "") - $$ = []node.Node{property} - + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + property := &ast.StmtProperty{ast.Node{}, variable, nil} + $$ = []ast.Vertex{property} + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating(property, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE '=' static_scalar { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - property := stmt.NewProperty(variable, $3, "") - $$ = []node.Node{property} - + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + property := &ast.StmtProperty{ast.Node{}, variable, $3} + $$ = []ast.Vertex{property} + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) - + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating(property, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating(property, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(property, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(property, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3239,40 +3219,40 @@ class_variable_declaration: class_constant_declaration: class_constant_declaration ',' T_STRING '=' static_scalar { - name := node.NewIdentifier($3.Value) - constant := stmt.NewConstant(name, $5, "") - constList := $1.(*stmt.ClassConstList) + name := &ast.Identifier{ast.Node{}, $3.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $5} + constList := $1.(*ast.StmtClassConstList) lastConst := lastNode(constList.Consts) constList.Consts = append(constList.Consts, constant) $$ = $1 // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) - $1.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5) + $1.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5) // save comments - yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(lastConst, token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONST T_STRING '=' static_scalar { - name := node.NewIdentifier($2.Value) - constant := stmt.NewConstant(name, $4, "") - $$ = stmt.NewClassConstList(nil, []node.Node{constant}) + name := &ast.Identifier{ast.Node{}, $2.Value} + constant := &ast.StmtConstant{ast.Node{}, name, $4} + $$ = &ast.StmtClassConstList{ast.Node{}, nil, []ast.Vertex{constant}} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + constant.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(constant, token.Name, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3284,13 +3264,13 @@ echo_expr_list: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3300,13 +3280,13 @@ echo_expr_list: for_expr: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_for_expr { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3318,13 +3298,13 @@ non_empty_for_expr: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3333,13 +3313,13 @@ non_empty_for_expr: chaining_method_or_property: chaining_method_or_property variable_property { - $$ = append($1, $2...) + $$ = append($1, $2...) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_property { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3348,29 +3328,29 @@ chaining_method_or_property: chaining_dereference: chaining_dereference '[' dim_offset ']' { - fetch := expr.NewArrayDimFetch(nil, $3) + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} $$ = append($1, fetch) - + // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '[' dim_offset ']' { - fetch := expr.NewArrayDimFetch(nil, $2) - $$ = []node.Node{fetch} - + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $2} + $$ = []ast.Vertex{fetch} + // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) - + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($2) + // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($1.Tokens, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3379,19 +3359,19 @@ chaining_dereference: chaining_instance_call: chaining_dereference chaining_method_or_property { - $$ = append($1, $2...) + $$ = append($1, $2...) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | chaining_dereference { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | chaining_method_or_property { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3400,13 +3380,13 @@ chaining_instance_call: instance_call: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | chaining_instance_call { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3417,15 +3397,15 @@ new_expr: { if $3 != nil { - $$ = expr.NewNew($2, $3.(*node.ArgumentList)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + $$ = &ast.ExprNew{ast.Node{}, $2, $3.(*ast.ArgumentList)} + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3) } else { - $$ = expr.NewNew($2, nil) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$ = &ast.ExprNew{ast.Node{}, $2, nil} + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) } // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3434,691 +3414,691 @@ new_expr: expr_without_variable: T_LIST '(' assignment_list ')' '=' expr { - listNode := expr.NewList($3) - $$ = assign.NewAssign(listNode, $6) + listNode := &ast.ExprList{ast.Node{}, $3} + $$ = &ast.ExprAssign{ast.Node{}, listNode, $6} // save position - listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + listNode.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(listNode, token.List, $2.Tokens) + yylex.(*Parser).setFreeFloating(listNode, token.ArrayPairList, $4.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable '=' expr { - $$ = assign.NewAssign($1, $3) + $$ = &ast.ExprAssign{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable '=' '&' variable { - $$ = assign.NewReference($1, $4) + $$ = &ast.ExprAssignReference{ast.Node{}, $1, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Equal, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable '=' '&' T_NEW class_name_reference ctor_arguments { - var _new *expr.New + var _new *ast.ExprNew if $6 != nil { - _new = expr.NewNew($5, $6.(*node.ArgumentList)) + _new = &ast.ExprNew{ast.Node{}, $5, $6.(*ast.ArgumentList)} } else { - _new = expr.NewNew($5, nil) + _new = &ast.ExprNew{ast.Node{}, $5, nil} } - $$ = assign.NewReference($1, _new) + $$ = &ast.ExprAssignReference{ast.Node{}, $1, _new} // save position if $6 != nil { - _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + _new.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6) } else { - _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $5)) + _new.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $5) } - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, _new)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, _new) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(_new, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Equal, $3.Tokens) + yylex.(*Parser).setFreeFloating(_new, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLONE expr { - $$ = expr.NewClone($2) + $$ = &ast.ExprClone{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_PLUS_EQUAL expr { - $$ = assign.NewPlus($1, $3) + $$ = &ast.ExprAssignPlus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MINUS_EQUAL expr { - $$ = assign.NewMinus($1, $3) + $$ = &ast.ExprAssignMinus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MUL_EQUAL expr { - $$ = assign.NewMul($1, $3) + $$ = &ast.ExprAssignMul{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_POW_EQUAL expr { - $$ = assign.NewPow($1, $3) + $$ = &ast.ExprAssignPow{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_DIV_EQUAL expr { - $$ = assign.NewDiv($1, $3) + $$ = &ast.ExprAssignDiv{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_CONCAT_EQUAL expr { - $$ = assign.NewConcat($1, $3) + $$ = &ast.ExprAssignConcat{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MOD_EQUAL expr { - $$ = assign.NewMod($1, $3) + $$ = &ast.ExprAssignMod{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_AND_EQUAL expr { - $$ = assign.NewBitwiseAnd($1, $3) + $$ = &ast.ExprAssignBitwiseAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_OR_EQUAL expr { - $$ = assign.NewBitwiseOr($1, $3) + $$ = &ast.ExprAssignBitwiseOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_XOR_EQUAL expr { - $$ = assign.NewBitwiseXor($1, $3) + $$ = &ast.ExprAssignBitwiseXor{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SL_EQUAL expr { - $$ = assign.NewShiftLeft($1, $3) + $$ = &ast.ExprAssignShiftLeft{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SR_EQUAL expr { - $$ = assign.NewShiftRight($1, $3) + $$ = &ast.ExprAssignShiftRight{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | rw_variable T_INC { - $$ = expr.NewPostInc($1) + $$ = &ast.ExprPostInc{ast.Node{}, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INC rw_variable { - $$ = expr.NewPreInc($2) + $$ = &ast.ExprPreInc{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | rw_variable T_DEC { - $$ = expr.NewPostDec($1) + $$ = &ast.ExprPostDec{ast.Node{}, $1} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DEC rw_variable { - $$ = expr.NewPreDec($2) + $$ = &ast.ExprPreDec{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_BOOLEAN_OR expr { - $$ = binary.NewBooleanOr($1, $3) + $$ = &ast.ExprBinaryBooleanOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_BOOLEAN_AND expr { - $$ = binary.NewBooleanAnd($1, $3) + $$ = &ast.ExprBinaryBooleanAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_OR expr { - $$ = binary.NewLogicalOr($1, $3) + $$ = &ast.ExprBinaryLogicalOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_AND expr { - $$ = binary.NewLogicalAnd($1, $3) + $$ = &ast.ExprBinaryLogicalAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_XOR expr { - $$ = binary.NewLogicalXor($1, $3) + $$ = &ast.ExprBinaryLogicalXor{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '|' expr { - $$ = binary.NewBitwiseOr($1, $3) + $$ = &ast.ExprBinaryBitwiseOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '&' expr { - $$ = binary.NewBitwiseAnd($1, $3) + $$ = &ast.ExprBinaryBitwiseAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '^' expr { - $$ = binary.NewBitwiseXor($1, $3) + $$ = &ast.ExprBinaryBitwiseXor{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '.' expr { - $$ = binary.NewConcat($1, $3) + $$ = &ast.ExprBinaryConcat{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '+' expr { - $$ = binary.NewPlus($1, $3) + $$ = &ast.ExprBinaryPlus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '-' expr { - $$ = binary.NewMinus($1, $3) + $$ = &ast.ExprBinaryMinus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '*' expr { - $$ = binary.NewMul($1, $3) + $$ = &ast.ExprBinaryMul{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_POW expr { - $$ = binary.NewPow($1, $3) + $$ = &ast.ExprBinaryPow{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '/' expr { - $$ = binary.NewDiv($1, $3) + $$ = &ast.ExprBinaryDiv{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '%' expr { - $$ = binary.NewMod($1, $3) + $$ = &ast.ExprBinaryMod{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SL expr { - $$ = binary.NewShiftLeft($1, $3) + $$ = &ast.ExprBinaryShiftLeft{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SR expr { - $$ = binary.NewShiftRight($1, $3) + $$ = &ast.ExprBinaryShiftRight{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '+' expr %prec T_INC { - $$ = expr.NewUnaryPlus($2) + $$ = &ast.ExprUnaryPlus{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '-' expr %prec T_INC { - $$ = expr.NewUnaryMinus($2) + $$ = &ast.ExprUnaryMinus{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '!' expr { - $$ = expr.NewBooleanNot($2) + $$ = &ast.ExprBooleanNot{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '~' expr { - $$ = expr.NewBitwiseNot($2) + $$ = &ast.ExprBitwiseNot{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_IDENTICAL expr { - $$ = binary.NewIdentical($1, $3) + $$ = &ast.ExprBinaryIdentical{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_IDENTICAL expr { - $$ = binary.NewNotIdentical($1, $3) + $$ = &ast.ExprBinaryNotIdentical{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_EQUAL expr { - $$ = binary.NewEqual($1, $3) + $$ = &ast.ExprBinaryEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_EQUAL expr { - $$ = binary.NewNotEqual($1, $3) + $$ = &ast.ExprBinaryNotEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '<' expr { - $$ = binary.NewSmaller($1, $3) + $$ = &ast.ExprBinarySmaller{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_SMALLER_OR_EQUAL expr { - $$ = binary.NewSmallerOrEqual($1, $3) + $$ = &ast.ExprBinarySmallerOrEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '>' expr { - $$ = binary.NewGreater($1, $3) + $$ = &ast.ExprBinaryGreater{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_GREATER_OR_EQUAL expr { - $$ = binary.NewGreaterOrEqual($1, $3) + $$ = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_INSTANCEOF class_name_reference { - $$ = expr.NewInstanceOf($1, $3) + $$ = &ast.ExprInstanceOf{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | parenthesis_expr { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - yylex.(*Parser).setFreeFloating($1, freefloating.Start, append((*$1.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$1.GetFreeFloating())[freefloating.Start]...)); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) - yylex.(*Parser).setFreeFloating($1, freefloating.End, append((*$1.GetFreeFloating())[freefloating.End], (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]...)); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating($1, token.Start, append($1.GetNode().Tokens[token.OpenParenthesisToken], $1.GetNode().Tokens[token.Start]...)); delete($1.GetNode().Tokens, token.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($1, token.End, append($1.GetNode().Tokens[token.End], $1.GetNode().Tokens[token.CloseParenthesisToken]...)); delete($1.GetNode().Tokens, token.CloseParenthesisToken) } | new_expr { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4127,294 +4107,294 @@ expr_without_variable: $$ = $2 // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, append($1.Tokens, append(yylex.(*Parser).GetFreeFloatingToken($1), $$.GetNode().Tokens[token.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, token.End, append($$.GetNode().Tokens[token.End], append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) for _, n := range($4) { switch nn := n.(type) { - case *expr.ArrayDimFetch: - nn.Variable = $$ + case *ast.ExprArrayDimFetch: + nn.Var = $$ $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.PropertyFetch: - nn.Variable = $$ + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprPropertyFetch: + nn.Var = $$ $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.MethodCall: - nn.Variable = $$ + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprMethodCall: + nn.Var = $$ $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, n)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, n) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' expr ':' expr { - $$ = expr.NewTernary($1, $3, $5) + $$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Cond, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.True, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' ':' expr { - $$ = expr.NewTernary($1, nil, $4) + $$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Cond, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.True, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | internal_functions_in_yacc { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INT_CAST expr { - $$ = cast.NewInt($2) + $$ = &ast.ExprCastInt{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DOUBLE_CAST expr { - $$ = cast.NewDouble($2) + $$ = &ast.ExprCastDouble{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_STRING_CAST expr { - $$ = cast.NewString($2) + $$ = &ast.ExprCastString{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ARRAY_CAST expr { - $$ = cast.NewArray($2) + $$ = &ast.ExprCastArray{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_OBJECT_CAST expr { - $$ = cast.NewObject($2) + $$ = &ast.ExprCastObject{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_BOOL_CAST expr { - $$ = cast.NewBool($2) + $$ = &ast.ExprCastBool{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_UNSET_CAST expr { - $$ = cast.NewUnset($2) + $$ = &ast.ExprCastUnset{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EXIT exit_expr { - e := $2.(*expr.Exit) + e := $2.(*ast.ExprExit) $$ = $2 - if (strings.EqualFold($1.Value, "die")) { + if (bytes.EqualFold($1.Value, []byte("die"))) { e.Die = true } // save position - if $2.GetPosition() == nil { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + if $2.GetNode().Position == nil { + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) } // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '@' expr { - $$ = expr.NewErrorSuppress($2) + $$ = &ast.ExprErrorSuppress{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | combined_scalar_offset { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | combined_scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '`' backticks_expr '`' { - $$ = expr.NewShellExec($2) + $$ = &ast.ExprShellExec{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_PRINT expr { - $$ = expr.NewPrint($2) + $$ = &ast.ExprPrint{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_YIELD { - $$ = expr.NewYield(nil, nil) + $$ = &ast.ExprYield{ast.Node{}, nil, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' { - $$ = expr.NewClosure($4, $6, nil, $8, false, $2 != nil, "") + $$ = &ast.ExprClosure{ast.Node{}, $2 != nil, false, $4, $6, nil, $8} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) if $2 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $3.Tokens) } else { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $5.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, $7.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $9.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.ParameterList, $5.Tokens) + yylex.(*Parser).setFreeFloating($$, token.LexicalVars, $7.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.Tokens) // normalize if $6 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVars]); delete((*$$.GetFreeFloating()), freefloating.LexicalVars) + yylex.(*Parser).setFreeFloating($$, token.Params, $$.GetNode().Tokens[token.LexicalVars]); delete($$.GetNode().Tokens, token.LexicalVars) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_STATIC function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' { - $$ = expr.NewClosure($5, $7, nil, $9, true, $3 != nil, "") + $$ = &ast.ExprClosure{ast.Node{}, $3 != nil, true, $5, $7, nil, $9} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $10)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $10) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Static, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Static, $2.Tokens) if $3 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $4.Tokens) } else { - yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Function, $3.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.Tokens) } - yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $6.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, $8.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $10.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.ParameterList, $6.Tokens) + yylex.(*Parser).setFreeFloating($$, token.LexicalVars, $8.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Stmts, $10.Tokens) // normalize if $7 == nil { - yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVars]); delete((*$$.GetFreeFloating()), freefloating.LexicalVars) + yylex.(*Parser).setFreeFloating($$, token.Params, $$.GetNode().Tokens[token.LexicalVars]); delete($$.GetNode().Tokens, token.LexicalVars) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -4424,51 +4404,51 @@ expr_without_variable: yield_expr: T_YIELD expr_without_variable { - $$ = expr.NewYield(nil, $2) + $$ = &ast.ExprYield{ast.Node{}, nil, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_YIELD variable { - $$ = expr.NewYield(nil, $2) + $$ = &ast.ExprYield{ast.Node{}, nil, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_YIELD expr T_DOUBLE_ARROW expr_without_variable { - $$ = expr.NewYield($2, $4) + $$ = &ast.ExprYield{ast.Node{}, $2, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_YIELD expr T_DOUBLE_ARROW variable { - $$ = expr.NewYield($2, $4) + $$ = &ast.ExprYield{ast.Node{}, $2, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4477,59 +4457,59 @@ yield_expr: combined_scalar_offset: combined_scalar '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | combined_scalar_offset '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { - str := scalar.NewString($1.Value) - $$ = expr.NewArrayDimFetch(str, $3) + str := &ast.ScalarString{ast.Node{}, $1.Value} + $$ = &ast.ExprArrayDimFetch{ast.Node{}, str, $3} // save position - str.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4)) + str.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | general_constant '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4538,28 +4518,28 @@ combined_scalar_offset: combined_scalar: T_ARRAY '(' array_pair_list ')' { - $$ = expr.NewArray($3) + $$ = &ast.ExprArray{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Array, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArrayPairList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '[' array_pair_list ']' { - $$ = expr.NewShortArray($2) + $$ = &ast.ExprShortArray{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArrayPairList, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4575,21 +4555,21 @@ function: lexical_vars: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE '(' lexical_var_list ')' { - $$ = expr.NewClosureUse($3) + $$ = &ast.ExprClosureUse{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Use, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVarList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Use, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.LexicalVarList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4598,73 +4578,69 @@ lexical_vars: lexical_var_list: lexical_var_list ',' T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) - variable := expr.NewVariable(identifier) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($3.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = append($1, variable) // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(variable, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | lexical_var_list ',' '&' T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) - variable := expr.NewVariable(identifier) - reference := expr.NewReference(variable) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($4.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + reference := &ast.ExprReference{ast.Node{}, variable} $$ = append($1, reference) // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($4) + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(reference, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - $$ = []node.Node{variable} + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = []ast.Vertex{variable} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(variable, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($2.Value, isDollar)) - variable := expr.NewVariable(identifier) - reference := expr.NewReference(variable) - $$ = []node.Node{reference} - + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($2.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + reference := &ast.ExprReference{ast.Node{}, variable} + $$ = []ast.Vertex{reference} + // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(reference, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(variable, token.Start, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4673,12 +4649,12 @@ lexical_var_list: function_call: namespace_name function_call_parameter_list { - name := name.NewName($1) - $$ = expr.NewFunctionCall(name, $2.(*node.ArgumentList)) - + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.ExprFunctionCall{ast.Node{}, name, $2.(*ast.ArgumentList)} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -4687,91 +4663,91 @@ function_call: } | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list { - funcName := name.NewRelative($3) - $$ = expr.NewFunctionCall(funcName, $4.(*node.ArgumentList)) - + funcName := &ast.NameRelative{ast.Node{}, $3} + $$ = &ast.ExprFunctionCall{ast.Node{}, funcName, $4.(*ast.ArgumentList)} + // save position - funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) + funcName.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(funcName, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(funcName, token.Namespace, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name function_call_parameter_list { - funcName := name.NewFullyQualified($2) - $$ = expr.NewFunctionCall(funcName, $3.(*node.ArgumentList)) - + funcName := &ast.NameFullyQualified{ast.Node{}, $2} + $$ = &ast.ExprFunctionCall{ast.Node{}, funcName, $3.(*ast.ArgumentList)} + // save position - funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) + funcName.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) - + $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) - + $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) - + $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) - + $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_without_objects function_call_parameter_list { - $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) - + $$ = &ast.ExprFunctionCall{ast.Node{}, $1, $2.(*ast.ArgumentList)} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) @@ -4783,23 +4759,23 @@ function_call: class_name: T_STATIC { - $$ = node.NewIdentifier($1.Value) - + $$ = &ast.Identifier{ast.Node{}, $1.Value} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - | namespace_name + | namespace_name { - $$ = name.NewName($1) - + $$ = &ast.NameName{ast.Node{}, $1} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -4807,26 +4783,26 @@ class_name: } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = name.NewRelative($3) - + $$ = &ast.NameRelative{ast.Node{}, $3} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - $$ = name.NewFullyQualified($2) - + $$ = &ast.NameFullyQualified{ast.Node{}, $2} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4835,11 +4811,11 @@ class_name: fully_qualified_class_name: namespace_name { - $$ = name.NewName($1) - + $$ = &ast.NameName{ast.Node{}, $1} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -4847,26 +4823,26 @@ fully_qualified_class_name: } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = name.NewRelative($3) - + $$ = &ast.NameRelative{ast.Node{}, $3} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - $$ = name.NewFullyQualified($2) - + $$ = &ast.NameFullyQualified{ast.Node{}, $2} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4875,13 +4851,13 @@ fully_qualified_class_name: class_name_reference: class_name { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | dynamic_class_name_reference { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4893,45 +4869,45 @@ dynamic_class_name_reference: $$ = $1 // save comments - yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($3[0], token.Var, $2.Tokens) for _, n := range($3) { switch nn := n.(type) { - case *expr.ArrayDimFetch: - nn.Variable = $$ - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + case *ast.ExprArrayDimFetch: + nn.Var = $$ + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.PropertyFetch: - nn.Variable = $$ - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprPropertyFetch: + nn.Var = $$ + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) } } for _, n := range($4) { switch nn := n.(type) { - case *expr.ArrayDimFetch: - nn.Variable = $$ - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + case *ast.ExprArrayDimFetch: + nn.Var = $$ + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.PropertyFetch: - nn.Variable = $$ - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprPropertyFetch: + nn.Var = $$ + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) } } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - | base_variable + | base_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4941,13 +4917,13 @@ dynamic_class_name_reference: dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property { - $$ = append($1, $2...) + $$ = append($1, $2...) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4958,9 +4934,9 @@ dynamic_class_name_variable_property: T_OBJECT_OPERATOR object_property { $$ = $2 - + // save comments - yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($2[0], token.Var, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4969,62 +4945,62 @@ dynamic_class_name_variable_property: exit_expr: /* empty */ { - $$ = expr.NewExit(nil); + $$ = &ast.ExprExit{ast.Node{}, false, nil}; yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' ')' { - $$ = expr.NewExit(nil); + $$ = &ast.ExprExit{ast.Node{}, false, nil}; // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Exit, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Exit, append($1.Tokens, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | parenthesis_expr { - $$ = expr.NewExit($1); + $$ = &ast.ExprExit{ast.Node{}, false, $1}; // save position - if yylex.(*Parser).currentToken.Value == ")" { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yylex.(*Parser).currentToken)) + if bytes.Compare(yylex.(*Parser).currentToken.Value, []byte(")")) == 0 { + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition(yylex.(*Parser).currentToken) } else { - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Exit, (*$1.GetFreeFloating())[freefloating.OpenParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Exit, $1.GetNode().Tokens[token.OpenParenthesisToken]); delete($1.GetNode().Tokens, token.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, token.Expr, $1.GetNode().Tokens[token.CloseParenthesisToken]); delete($1.GetNode().Tokens, token.CloseParenthesisToken) } ; backticks_expr: /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ENCAPSED_AND_WHITESPACE { - part := scalar.NewEncapsedStringPart($1.Value) - $$ = []node.Node{part} + part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} + $$ = []ast.Vertex{part} // save position - part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + part.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | encaps_list { - $$ = $1; + $$ = $1; yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5033,13 +5009,13 @@ backticks_expr: ctor_arguments: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call_parameter_list { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5048,147 +5024,147 @@ ctor_arguments: common_scalar: T_LNUMBER { - $$ = scalar.NewLnumber($1.Value) + $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DNUMBER { - $$ = scalar.NewDnumber($1.Value) + $$ = &ast.ScalarDnumber{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONSTANT_ENCAPSED_STRING { - $$ = scalar.NewString($1.Value) + $$ = &ast.ScalarString{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LINE { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FILE { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DIR { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_TRAIT_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_METHOD_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_FUNC_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { - encapsed := scalar.NewEncapsedStringPart($2.Value) - $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) + encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} + $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}} // save position - encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + encapsed.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_START_HEREDOC T_END_HEREDOC { - $$ = scalar.NewHeredoc($1.Value, nil) + $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5197,17 +5173,17 @@ common_scalar: static_class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := node.NewIdentifier($3.Value) - $$ = expr.NewClassConstFetch($1, target) - + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} + // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5216,7 +5192,7 @@ static_class_constant: static_scalar: static_scalar_value { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5225,24 +5201,24 @@ static_scalar: static_scalar_value: common_scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_class_name_scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | namespace_name { - name := name.NewName($1) - $$ = expr.NewConstFetch(name) + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition(name) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -5251,81 +5227,81 @@ static_scalar_value: } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := name.NewRelative($3) - $$ = expr.NewConstFetch(name) - + name := &ast.NameRelative{ast.Node{}, $3} + $$ = &ast.ExprConstFetch{ast.Node{}, name} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - name := name.NewFullyQualified($2) - $$ = expr.NewConstFetch(name) + name := &ast.NameFullyQualified{ast.Node{}, $2} + $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ARRAY '(' static_array_pair_list ')' { - $$ = expr.NewArray($3) + $$ = &ast.ExprArray{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Array, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArrayPairList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '[' static_array_pair_list ']' { - $$ = expr.NewShortArray($2) + $$ = &ast.ExprShortArray{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.ArrayPairList, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_class_constant { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLASS_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_operation { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5334,417 +5310,417 @@ static_scalar_value: static_operation: static_scalar_value '[' static_scalar_value ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '+' static_scalar_value { - $$ = binary.NewPlus($1, $3) + $$ = &ast.ExprBinaryPlus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '-' static_scalar_value { - $$ = binary.NewMinus($1, $3) + $$ = &ast.ExprBinaryMinus{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '*' static_scalar_value { - $$ = binary.NewMul($1, $3) + $$ = &ast.ExprBinaryMul{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_POW static_scalar_value { - $$ = binary.NewPow($1, $3) + $$ = &ast.ExprBinaryPow{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '/' static_scalar_value { - $$ = binary.NewDiv($1, $3) + $$ = &ast.ExprBinaryDiv{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '%' static_scalar_value { - $$ = binary.NewMod($1, $3) + $$ = &ast.ExprBinaryMod{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '!' static_scalar_value { - $$ = expr.NewBooleanNot($2) + $$ = &ast.ExprBooleanNot{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '~' static_scalar_value { - $$ = expr.NewBitwiseNot($2) - + $$ = &ast.ExprBitwiseNot{ast.Node{}, $2} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '|' static_scalar_value { - $$ = binary.NewBitwiseOr($1, $3) + $$ = &ast.ExprBinaryBitwiseOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '&' static_scalar_value { - $$ = binary.NewBitwiseAnd($1, $3) + $$ = &ast.ExprBinaryBitwiseAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '^' static_scalar_value { - $$ = binary.NewBitwiseXor($1, $3) + $$ = &ast.ExprBinaryBitwiseXor{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_SL static_scalar_value { - $$ = binary.NewShiftLeft($1, $3) + $$ = &ast.ExprBinaryShiftLeft{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_SR static_scalar_value { - $$ = binary.NewShiftRight($1, $3) + $$ = &ast.ExprBinaryShiftRight{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '.' static_scalar_value { - $$ = binary.NewConcat($1, $3) + $$ = &ast.ExprBinaryConcat{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_LOGICAL_XOR static_scalar_value { - $$ = binary.NewLogicalXor($1, $3) + $$ = &ast.ExprBinaryLogicalXor{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_LOGICAL_AND static_scalar_value { - $$ = binary.NewLogicalAnd($1, $3) + $$ = &ast.ExprBinaryLogicalAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_LOGICAL_OR static_scalar_value { - $$ = binary.NewLogicalOr($1, $3) + $$ = &ast.ExprBinaryLogicalOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_BOOLEAN_AND static_scalar_value { - $$ = binary.NewBooleanAnd($1, $3) + $$ = &ast.ExprBinaryBooleanAnd{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_BOOLEAN_OR static_scalar_value { - $$ = binary.NewBooleanOr($1, $3) + $$ = &ast.ExprBinaryBooleanOr{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_IDENTICAL static_scalar_value { - $$ = binary.NewIdentical($1, $3) + $$ = &ast.ExprBinaryIdentical{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_NOT_IDENTICAL static_scalar_value { - $$ = binary.NewNotIdentical($1, $3) + $$ = &ast.ExprBinaryNotIdentical{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_EQUAL static_scalar_value { - $$ = binary.NewEqual($1, $3) + $$ = &ast.ExprBinaryEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_NOT_EQUAL static_scalar_value { - $$ = binary.NewNotEqual($1, $3) + $$ = &ast.ExprBinaryNotEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '<' static_scalar_value { - $$ = binary.NewSmaller($1, $3) + $$ = &ast.ExprBinarySmaller{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '>' static_scalar_value { - $$ = binary.NewGreater($1, $3) + $$ = &ast.ExprBinaryGreater{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_SMALLER_OR_EQUAL static_scalar_value { - $$ = binary.NewSmallerOrEqual($1, $3) + $$ = &ast.ExprBinarySmallerOrEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_IS_GREATER_OR_EQUAL static_scalar_value { - $$ = binary.NewGreaterOrEqual($1, $3) + $$ = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '?' ':' static_scalar_value { - $$ = expr.NewTernary($1, nil, $4) + $$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Cond, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.True, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '?' static_scalar_value ':' static_scalar_value { - $$ = expr.NewTernary($1, $3, $5) + $$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Cond, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.True, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '+' static_scalar_value { - $$ = expr.NewUnaryPlus($2) - + $$ = &ast.ExprUnaryPlus{ast.Node{}, $2} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '-' static_scalar_value { - $$ = expr.NewUnaryMinus($2) - + $$ = &ast.ExprUnaryMinus{ast.Node{}, $2} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5753,8 +5729,8 @@ static_operation: $$ = $2 // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, append($1.Tokens, append(yylex.(*Parser).GetFreeFloatingToken($1), $$.GetNode().Tokens[token.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, token.End, append($$.GetNode().Tokens[token.End], append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5763,18 +5739,18 @@ static_operation: general_constant: class_constant { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | namespace_name { - name := name.NewName($1) - $$ = expr.NewConstFetch(name) + name := &ast.NameName{ast.Node{}, $1} + $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeListPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition(name) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) @@ -5783,30 +5759,30 @@ general_constant: } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := name.NewRelative($3) - $$ = expr.NewConstFetch(name) - + name := &ast.NameRelative{ast.Node{}, $3} + $$ = &ast.ExprConstFetch{ast.Node{}, name} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) - + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition(name) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(name, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(name, token.Namespace, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name { - name := name.NewFullyQualified($2) - $$ = expr.NewConstFetch(name) - + name := &ast.NameFullyQualified{ast.Node{}, $2} + $$ = &ast.ExprConstFetch{ast.Node{}, name} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition(name) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5815,69 +5791,69 @@ general_constant: scalar: T_STRING_VARNAME { - name := node.NewIdentifier($1.Value) - $$ = expr.NewVariable(name) - + name := &ast.Identifier{ast.Node{}, $1.Value} + $$ = &ast.ExprVariable{ast.Node{}, name} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | general_constant { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name_scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | common_scalar { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '"' encaps_list '"' { - $$ = scalar.NewEncapsed($2) + $$ = &ast.ScalarEncapsed{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_START_HEREDOC encaps_list T_END_HEREDOC { - $$ = scalar.NewHeredoc($1.Value, $2) + $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLASS_C { - $$ = scalar.NewMagicConstant($1.Value) + $$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5886,7 +5862,7 @@ scalar: static_array_pair_list: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5896,7 +5872,7 @@ static_array_pair_list: // save comments if $2 != nil { - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5917,54 +5893,54 @@ possible_comma: non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := expr.NewArrayItem($3, $5, false) + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, $5} $$ = append($1, arrayItem) - + // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_static_array_pair_list ',' static_scalar_value { - arrayItem := expr.NewArrayItem(nil, $3, false) + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $3} $$ = append($1, arrayItem) - + // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).MoveFreeFloating($3, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := expr.NewArrayItem($1, $3, false) - $$ = []node.Node{arrayItem} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, $3} + $$ = []ast.Vertex{arrayItem} // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value { - arrayItem := expr.NewArrayItem(nil, $1, false) - $$ = []node.Node{arrayItem} - + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $1} + $$ = []ast.Vertex{arrayItem} + // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1, arrayItem) @@ -5976,13 +5952,13 @@ non_empty_static_array_pair_list: expr: r_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr_without_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5994,14 +5970,14 @@ parenthesis_expr: $$ = $2 // save comments - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, token.Start, append($2.GetNode().Tokens[token.OpenParenthesisToken], $2.GetNode().Tokens[token.Start]...)) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, freefloating.End, append((*$2.GetFreeFloating())[freefloating.End], (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, token.End, append($2.GetNode().Tokens[token.End], $2.GetNode().Tokens[token.CloseParenthesisToken]...)) } - yylex.(*Parser).setFreeFloating($2, freefloating.OpenParenthesisToken, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) - yylex.(*Parser).setFreeFloating($2, freefloating.CloseParenthesisToken, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($2, token.OpenParenthesisToken, append($1.Tokens, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($2, token.CloseParenthesisToken, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6010,14 +5986,14 @@ parenthesis_expr: $$ = $2 // save comments - if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, token.Start, append($2.GetNode().Tokens[token.OpenParenthesisToken], $2.GetNode().Tokens[token.Start]...)) } - if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, freefloating.End, append((*$2.GetFreeFloating())[freefloating.End], (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, token.End, append($2.GetNode().Tokens[token.End], $2.GetNode().Tokens[token.CloseParenthesisToken]...)) } - yylex.(*Parser).setFreeFloating($2, freefloating.OpenParenthesisToken, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) - yylex.(*Parser).setFreeFloating($2, freefloating.CloseParenthesisToken, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($2, token.OpenParenthesisToken, append($1.Tokens, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($2, token.CloseParenthesisToken, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6027,7 +6003,7 @@ parenthesis_expr: r_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6037,7 +6013,7 @@ r_variable: w_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6046,7 +6022,7 @@ w_variable: rw_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6058,54 +6034,54 @@ variable: $$ = $1 if $4 != nil { - $4[0].(*expr.MethodCall).Method = $3[len($3)-1].(*expr.PropertyFetch).Property + $4[0].(*ast.ExprMethodCall).Method = $3[len($3)-1].(*ast.ExprPropertyFetch).Property $3 = append($3[:len($3)-1], $4...) } // save comments - yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($3[0], token.Var, $2.Tokens) for _, n := range($3) { switch nn := n.(type) { - case *expr.ArrayDimFetch: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + case *ast.ExprArrayDimFetch: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.PropertyFetch: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprPropertyFetch: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.MethodCall: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprMethodCall: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) } } for _, n := range($5) { switch nn := n.(type) { - case *expr.ArrayDimFetch: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + case *ast.ExprArrayDimFetch: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.PropertyFetch: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprPropertyFetch: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) - - case *expr.MethodCall: - nn.Variable = $$ - nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) + + case *ast.ExprMethodCall: + nn.Var = $$ + nn.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn) $$ = nn - yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + yylex.(*Parser).MoveFreeFloating(nn.Var, $$) } } @@ -6113,7 +6089,7 @@ variable: } | base_variable_with_function_calls { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6122,13 +6098,13 @@ variable: variable_properties: variable_properties variable_property { - $$ = append($1, $2...) + $$ = append($1, $2...) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6139,14 +6115,14 @@ variable_property: T_OBJECT_OPERATOR object_property method_or_not { if $3 != nil { - $3[0].(*expr.MethodCall).Method = $2[len($2)-1].(*expr.PropertyFetch).Property + $3[0].(*ast.ExprMethodCall).Method = $2[len($2)-1].(*ast.ExprPropertyFetch).Property $2 = append($2[:len($2)-1], $3...) } $$ = $2 // save comments - yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($2[0], token.Var, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6155,29 +6131,29 @@ variable_property: array_method_dereference: array_method_dereference '[' dim_offset ']' { - fetch := expr.NewArrayDimFetch(nil, $3) + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} $$ = append($1, fetch) // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | method '[' dim_offset ']' { - fetch := expr.NewArrayDimFetch(nil, $3) - $$ = []node.Node{$1, fetch} + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + $$ = []ast.Vertex{$1, fetch} // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6186,10 +6162,10 @@ array_method_dereference: method: function_call_parameter_list { - $$ = expr.NewMethodCall(nil, nil, $1.(*node.ArgumentList)) + $$ = &ast.ExprMethodCall{ast.Node{}, nil, nil, $1.(*ast.ArgumentList)} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6198,19 +6174,19 @@ method: method_or_not: method { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | array_method_dereference { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6219,16 +6195,16 @@ method_or_not: variable_without_objects: reference_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | simple_indirect_reference reference_variable { - $1.last.SetVarName($2) + $1.last.VarName = $2 for _, n := range($1.all) { - n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2)) + n.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2) } $$ = $1.all[0] @@ -6240,27 +6216,27 @@ variable_without_objects: static_member: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { - $$ = expr.NewStaticPropertyFetch($1, $3) + $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { - $$ = expr.NewStaticPropertyFetch($1, $3) + $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6269,7 +6245,7 @@ static_member: variable_class_name: reference_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6278,29 +6254,29 @@ variable_class_name: array_function_dereference: array_function_dereference '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6309,19 +6285,19 @@ array_function_dereference: base_variable_with_function_calls: base_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | array_function_dereference { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6331,16 +6307,16 @@ base_variable_with_function_calls: base_variable: reference_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | simple_indirect_reference reference_variable { - $1.last.SetVarName($2) + $1.last.VarName = $2 for _, n := range($1.all) { - n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2)) + n.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2) } $$ = $1.all[0] @@ -6349,7 +6325,7 @@ base_variable: } | static_member { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6358,35 +6334,35 @@ base_variable: reference_variable: reference_variable '[' dim_offset ']' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | reference_variable '{' expr '}' { - $$ = expr.NewArrayDimFetch($1, $3) + $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4) + // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | compound_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6396,31 +6372,30 @@ reference_variable: compound_variable: T_VARIABLE { - name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - $$ = expr.NewVariable(name) - + name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + $$ = &ast.ExprVariable{ast.Node{}, name} + // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken($$) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '$' '{' expr '}' { - $$ = expr.NewVariable($3) - + $$ = &ast.ExprVariable{ast.Node{}, $3} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) - yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, token.Start, append($2.Tokens, append(yylex.(*Parser).GetFreeFloatingToken($2), $3.GetNode().Tokens[token.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, token.End, append($3.GetNode().Tokens[token.End], append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6429,13 +6404,13 @@ compound_variable: dim_offset: /* empty */ { - $$ = nil + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6443,19 +6418,19 @@ dim_offset: object_property: - object_dim_list + object_dim_list { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_without_objects { - fetch := expr.NewPropertyFetch(nil, $1) - $$ = []node.Node{fetch} + fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, $1} + $$ = []ast.Vertex{fetch} // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6464,39 +6439,39 @@ object_property: object_dim_list: object_dim_list '[' dim_offset ']' { - fetch := expr.NewArrayDimFetch(nil, $3) + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} $$ = append($1, fetch) - + // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | object_dim_list '{' expr '}' { - fetch := expr.NewArrayDimFetch(nil, $3) + fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} $$ = append($1, fetch) - + // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) // save comments - yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_name { - fetch := expr.NewPropertyFetch(nil, $1) - $$ = []node.Node{fetch} - + fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, $1} + $$ = []ast.Vertex{fetch} + // save position - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6505,26 +6480,26 @@ object_dim_list: variable_name: T_STRING { - $$ = node.NewIdentifier($1.Value) - + $$ = &ast.Identifier{ast.Node{}, $1.Value} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '{' expr '}' { $$ = $2 - + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, append($1.Tokens, append(yylex.(*Parser).GetFreeFloatingToken($1), $$.GetNode().Tokens[token.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, token.End, append($$.GetNode().Tokens[token.End], append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6533,33 +6508,33 @@ variable_name: simple_indirect_reference: '$' { - n := expr.NewVariable(nil) - $$ = simpleIndirectReference{[]*expr.Variable{n}, n} - + n := &ast.ExprVariable{ast.Node{}, nil} + $$ = simpleIndirectReference{[]*ast.ExprVariable{n}, n} + // save position - n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + n.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + // save comments - yylex.(*Parser).setFreeFloating(n, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating(n, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(n, token.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | simple_indirect_reference '$' { - n := expr.NewVariable(nil) + n := &ast.ExprVariable{ast.Node{}, nil} - $1.last.SetVarName(n) + $1.last.VarName = n $1.all = append($1.all, n) $1.last = n $$ = $1 - + // save position - n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - + n.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + // save comments - yylex.(*Parser).setFreeFloating(n, freefloating.Start, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($2)) + yylex.(*Parser).setFreeFloating(n, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloating(n, token.Dollar, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6569,22 +6544,22 @@ assignment_list: assignment_list ',' assignment_list_element { if len($1) == 0 { - $1 = []node.Node{expr.NewArrayItem(nil, nil, false)} + $1 = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} } $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | assignment_list_element { - if $1.(*expr.ArrayItem).Key == nil && $1.(*expr.ArrayItem).Val == nil { - $$ = []node.Node{} + if $1.(*ast.ExprArrayItem).Key == nil && $1.(*ast.ExprArrayItem).Val == nil { + $$ = []ast.Vertex{} } else { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -6595,10 +6570,10 @@ assignment_list: assignment_list_element: variable { - $$ = expr.NewArrayItem(nil, $1, false) - + $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, $1} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) @@ -6607,23 +6582,23 @@ assignment_list_element: } | T_LIST '(' assignment_list ')' { - listNode := expr.NewList($3) - $$ = expr.NewArrayItem(nil, listNode, false) - + listNode := &ast.ExprList{ast.Node{}, $3} + $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} + // save position - listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(listNode)) + listNode.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition(listNode) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating(listNode, token.List, $2.Tokens) + yylex.(*Parser).setFreeFloating(listNode, token.ArrayPairList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | /* empty */ { - $$ = expr.NewArrayItem(nil, nil, false) + $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6633,7 +6608,7 @@ assignment_list_element: array_pair_list: /* empty */ { - $$ = []node.Node{} + $$ = []ast.Vertex{} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6642,12 +6617,12 @@ array_pair_list: $$ = $1 if $2 != nil { - $$ = append($1, expr.NewArrayItem(nil, nil, false)) + $$ = append($1, &ast.ExprArrayItem{ast.Node{}, false, nil, nil}) } // save comments if $2 != nil { - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -6657,54 +6632,54 @@ array_pair_list: non_empty_array_pair_list: non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr { - arrayItem := expr.NewArrayItem($3, $5, false) + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, $5} $$ = append($1, arrayItem) // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' expr { - arrayItem := expr.NewArrayItem(nil, $3, false) + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $3} $$ = append($1, arrayItem) - + // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($3) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).MoveFreeFloating($3, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW expr { - arrayItem := expr.NewArrayItem($1, $3, false) - $$ = []node.Node{arrayItem} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, $3} + $$ = []ast.Vertex{arrayItem} // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3) + // save comments yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr { - arrayItem := expr.NewArrayItem(nil, $1, false) - $$ = []node.Node{arrayItem} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $1} + $$ = []ast.Vertex{arrayItem} // save position - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodePosition($1) // save comments yylex.(*Parser).MoveFreeFloating($1, arrayItem) @@ -6713,67 +6688,67 @@ non_empty_array_pair_list: } | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable { - reference := expr.NewReference($6) - arrayItem := expr.NewArrayItem($3, reference, false) + reference := &ast.ExprReference{ast.Node{}, $6} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, reference} $$ = append($1, arrayItem) - + // save position - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($5, $6)) - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $6)) - + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($5, $6) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($3, $6) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) - yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $5.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloating(reference, token.Start, $5.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' '&' w_variable { - reference := expr.NewReference($4) - arrayItem := expr.NewArrayItem(nil, reference, false) + reference := &ast.ExprReference{ast.Node{}, $4} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} $$ = append($1, arrayItem) - + // save position - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) - + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4) + // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) + yylex.(*Parser).setFreeFloating(arrayItem, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW '&' w_variable { - reference := expr.NewReference($4) - arrayItem := expr.NewArrayItem($1, reference, false) - $$ = []node.Node{arrayItem} - + reference := &ast.ExprReference{ast.Node{}, $4} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, reference} + $$ = []ast.Vertex{arrayItem} + // save position - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloating(reference, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' w_variable { - reference := expr.NewReference($2) - arrayItem := expr.NewArrayItem(nil, reference, false) - $$ = []node.Node{arrayItem} - + reference := &ast.ExprReference{ast.Node{}, $2} + arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} + $$ = []ast.Vertex{arrayItem} + // save position - reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + reference.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + arrayItem.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) + // save comments - yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6782,39 +6757,39 @@ non_empty_array_pair_list: encaps_list: encaps_list encaps_var { - $$ = append($1, $2) + $$ = append($1, $2) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | encaps_list T_ENCAPSED_AND_WHITESPACE { - encapsed := scalar.NewEncapsedStringPart($2.Value) + encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} $$ = append($1, encapsed) // save position - encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + encapsed.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) // save comments - yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | encaps_var { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ENCAPSED_AND_WHITESPACE encaps_var { - encapsed := scalar.NewEncapsedStringPart($1.Value) - $$ = []node.Node{encapsed, $2} + encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} + $$ = []ast.Vertex{encapsed, $2} // save position - encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + encapsed.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6823,105 +6798,102 @@ encaps_list: encaps_var: T_VARIABLE { - name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - $$ = expr.NewVariable(name) + name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken($$) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - $$ = expr.NewArrayDimFetch(variable, $3) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $3} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - variable := expr.NewVariable(identifier) - fetch := node.NewIdentifier($3.Value) - $$ = expr.NewPropertyFetch(variable, fetch) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + variable := &ast.ExprVariable{ast.Node{}, identifier} + fetch := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprPropertyFetch{ast.Node{}, variable, fetch} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - fetch.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + fetch.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).addDollarToken(variable) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens) + yylex.(*Parser).setFreeFloating(fetch, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { - variable := expr.NewVariable($2) + variable := &ast.ExprVariable{ast.Node{}, $2} $$ = variable // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.End, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { - name := node.NewIdentifier($2.Value) - variable := expr.NewVariable(name) + name := &ast.Identifier{ast.Node{}, $2.Value} + variable := &ast.ExprVariable{ast.Node{}, name} $$ = variable // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + name.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.End, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := node.NewIdentifier($2.Value) - variable := expr.NewVariable(identifier) - $$ = expr.NewArrayDimFetch(variable, $4) + identifier := &ast.Identifier{ast.Node{}, $2.Value} + variable := &ast.ExprVariable{ast.Node{}, identifier} + $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $4} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + variable.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($2) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($5.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($5)...)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append($6.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($6)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.Var, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, token.Expr, append($5.Tokens, yylex.(*Parser).GetFreeFloatingToken($5)...)) + yylex.(*Parser).setFreeFloating($$, token.End, append($6.Tokens, yylex.(*Parser).GetFreeFloatingToken($6)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6930,8 +6902,8 @@ encaps_var: $$ = $2; // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) - yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, token.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, token.End, append($3.Tokens, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6940,45 +6912,44 @@ encaps_var: encaps_var_offset: T_STRING { - $$ = scalar.NewString($1.Value) + $$ = &ast.ScalarString{ast.Node{}, $1.Value} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NUM_STRING { // TODO: add option to handle 64 bit integer - if _, err := strconv.Atoi($1.Value); err == nil { - $$ = scalar.NewLnumber($1.Value) + if _, err := strconv.Atoi(string($1.Value)); err == nil { + $$ = &ast.ScalarLnumber{ast.Node{}, $1.Value} } else { - $$ = scalar.NewString($1.Value) + $$ = &ast.ScalarString{ast.Node{}, $1.Value} } // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE { - identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) - $$ = expr.NewVariable(identifier) + identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc($1.Value, isDollar)} + $$ = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + identifier.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).addDollarToken($$) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6987,105 +6958,105 @@ encaps_var_offset: internal_functions_in_yacc: T_ISSET '(' isset_variables ')' { - $$ = expr.NewIsset($3) - + $$ = &ast.ExprIsset{ast.Node{}, $3} + // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) + // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Isset, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Isset, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.VarList, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EMPTY '(' variable ')' { - $$ = expr.NewEmpty($3) + $$ = &ast.ExprEmpty{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Empty, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EMPTY '(' expr ')' { - $$ = expr.NewEmpty($3) + $$ = &ast.ExprEmpty{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Empty, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INCLUDE expr { - $$ = expr.NewInclude($2) + $$ = &ast.ExprInclude{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INCLUDE_ONCE expr { - $$ = expr.NewIncludeOnce($2) + $$ = &ast.ExprIncludeOnce{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EVAL '(' expr ')' { - $$ = expr.NewEval($3) + $$ = &ast.ExprEval{ast.Node{}, $3} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Eval, $2.FreeFloating) - yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Eval, $2.Tokens) + yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_REQUIRE expr { - $$ = expr.NewRequire($2) + $$ = &ast.ExprRequire{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_REQUIRE_ONCE expr { - $$ = expr.NewRequireOnce($2) + $$ = &ast.ExprRequireOnce{ast.Node{}, $2} // save position - $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7094,7 +7065,7 @@ internal_functions_in_yacc: isset_variables: isset_variable { - $$ = []node.Node{$1} + $$ = []ast.Vertex{$1} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7103,7 +7074,7 @@ isset_variables: $$ = append($1, $3) // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7112,13 +7083,13 @@ isset_variables: isset_variable: variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr_without_variable { - $$ = $1 + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7127,33 +7098,33 @@ isset_variable: class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := node.NewIdentifier($3.Value) - $$ = expr.NewClassConstFetch($1, target) + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := node.NewIdentifier($3.Value) - $$ = expr.NewClassConstFetch($1, target) + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7162,17 +7133,17 @@ class_constant: static_class_name_scalar: class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { - target := node.NewIdentifier($3.Value) - $$ = expr.NewClassConstFetch($1, target) + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7181,17 +7152,17 @@ static_class_name_scalar: class_name_scalar: class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { - target := node.NewIdentifier($3.Value) - $$ = expr.NewClassConstFetch($1, target) + target := &ast.Identifier{ast.Node{}, $3.Value} + $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + target.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3) + $$.GetNode().Position = yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) - yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, token.Name, $2.Tokens) + yylex.(*Parser).setFreeFloating(target, token.Start, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7200,6 +7171,6 @@ class_name_scalar: %% type simpleIndirectReference struct { - all []*expr.Variable - last *expr.Variable + all []*ast.ExprVariable + last *ast.ExprVariable } diff --git a/internal/php5/php5_bench_test.go b/internal/php5/php5_bench_test.go index 1cdd5aa..2c7d11c 100644 --- a/internal/php5/php5_bench_test.go +++ b/internal/php5/php5_bench_test.go @@ -3,7 +3,7 @@ package php5_test import ( "testing" - "github.com/z7zmey/php-parser/php5" + "github.com/z7zmey/php-parser/internal/php5" ) func BenchmarkPhp5(b *testing.B) { diff --git a/internal/php5/php5_test.go b/internal/php5/php5_test.go index 3cbb727..295e0b0 100644 --- a/internal/php5/php5_test.go +++ b/internal/php5/php5_test.go @@ -1,21 +1,13 @@ package php5_test import ( + "gotest.tools/assert" "testing" - "gotest.tools/assert" - - "github.com/z7zmey/php-parser/errors" - "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/node/expr" - "github.com/z7zmey/php-parser/node/expr/assign" - "github.com/z7zmey/php-parser/node/expr/binary" - "github.com/z7zmey/php-parser/node/expr/cast" - "github.com/z7zmey/php-parser/node/name" - "github.com/z7zmey/php-parser/node/scalar" - "github.com/z7zmey/php-parser/node/stmt" - "github.com/z7zmey/php-parser/php5" - "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/internal/php5" + "github.com/z7zmey/php-parser/pkg/ast" + "github.com/z7zmey/php-parser/pkg/errors" + "github.com/z7zmey/php-parser/pkg/position" ) func TestPhp5(t *testing.T) { @@ -402,106 +394,130 @@ func TestPhp5(t *testing.T) { parsing process must be terminated ` - expected := &node.Root{ - Position: &position.Position{ - StartLine: 2, - EndLine: 379, - StartPos: 5, - EndPos: 6944, + expected := &ast.Root{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 379, + StartPos: 5, + EndPos: 6944, + }, }, - Stmts: []node.Node{ - &stmt.Expression{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 5, - EndPos: 20, - }, - Expr: &expr.FunctionCall{ + Stmts: []ast.Vertex{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 5, - EndPos: 19, + EndPos: 20, }, - Function: &name.Name{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 5, - EndPos: 8, + EndPos: 19, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 5, - EndPos: 8, + }, + Function: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 8, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 8, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 8, - EndPos: 19, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 8, + EndPos: 19, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 9, - EndPos: 11, - }, - IsReference: false, - Variadic: false, - Expr: &expr.Variable{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 9, EndPos: 11, }, - VarName: &node.Identifier{ + }, + IsReference: false, + Variadic: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 9, EndPos: 11, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 9, + EndPos: 11, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 13, - EndPos: 18, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, - StartPos: 16, + StartPos: 13, EndPos: 18, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 16, EndPos: 18, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 16, + EndPos: 18, + }, + }, + Value: []byte("b"), }, }, }, @@ -509,96 +525,118 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 23, - EndPos: 39, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 23, - EndPos: 38, + EndPos: 39, }, - Function: &expr.Variable{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 23, - EndPos: 27, + EndPos: 38, }, - VarName: &node.Identifier{ + }, + Function: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 23, EndPos: 27, }, - Value: "foo", }, - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 27, - EndPos: 38, - }, - Arguments: []node.Node{ - &node.Argument{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, - StartPos: 28, - EndPos: 30, + StartPos: 23, + EndPos: 27, }, - Variadic: false, - IsReference: false, - Expr: &expr.Variable{ + }, + Value: []byte("foo"), + }, + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 3, + EndLine: 3, + StartPos: 27, + EndPos: 38, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 28, EndPos: 30, }, - VarName: &node.Identifier{ + }, + Variadic: false, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 28, EndPos: 30, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 3, + EndLine: 3, + StartPos: 28, + EndPos: 30, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 32, - EndPos: 37, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, - StartPos: 35, + StartPos: 32, EndPos: 37, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 35, EndPos: 37, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 3, + EndLine: 3, + StartPos: 35, + EndPos: 37, + }, + }, + Value: []byte("b"), }, }, }, @@ -606,105 +644,129 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 42, - EndPos: 63, - }, - Expr: &expr.MethodCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 42, - EndPos: 62, + EndPos: 63, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 42, - EndPos: 46, + EndPos: 62, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 42, EndPos: 46, }, - Value: "foo", }, - }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 48, - EndPos: 51, - }, - Value: "bar", - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 51, - EndPos: 62, - }, - Arguments: []node.Node{ - &node.Argument{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, - StartPos: 52, - EndPos: 54, + StartPos: 42, + EndPos: 46, }, - Variadic: false, - IsReference: false, - Expr: &expr.Variable{ + }, + Value: []byte("foo"), + }, + }, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 48, + EndPos: 51, + }, + }, + Value: []byte("bar"), + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 51, + EndPos: 62, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 52, EndPos: 54, }, - VarName: &node.Identifier{ + }, + Variadic: false, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 52, EndPos: 54, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 52, + EndPos: 54, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 56, - EndPos: 61, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, - StartPos: 59, + StartPos: 56, EndPos: 61, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 59, EndPos: 61, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 59, + EndPos: 61, + }, + }, + Value: []byte("b"), }, }, }, @@ -712,107 +774,131 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 66, - EndPos: 86, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 66, - EndPos: 85, + EndPos: 86, }, - Class: &name.Name{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 66, - EndPos: 69, + EndPos: 85, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 66, - EndPos: 69, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 66, + EndPos: 69, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 66, + EndPos: 69, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - Call: &node.Identifier{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 71, - EndPos: 74, + Call: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 71, + EndPos: 74, + }, }, - Value: "bar", + Value: []byte("bar"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 74, - EndPos: 85, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 74, + EndPos: 85, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 75, - EndPos: 77, - }, - Variadic: false, - IsReference: false, - Expr: &expr.Variable{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 75, EndPos: 77, }, - VarName: &node.Identifier{ + }, + Variadic: false, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 75, EndPos: 77, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 75, + EndPos: 77, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 79, - EndPos: 84, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 82, + StartPos: 79, EndPos: 84, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 82, EndPos: 84, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 82, + EndPos: 84, + }, + }, + Value: []byte("b"), }, }, }, @@ -820,105 +906,129 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 89, - EndPos: 110, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 89, - EndPos: 109, + EndPos: 110, }, - Class: &expr.Variable{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 89, - EndPos: 93, + EndPos: 109, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 89, EndPos: 93, }, - Value: "foo", }, - }, - Call: &node.Identifier{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 95, - EndPos: 98, - }, - Value: "bar", - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 98, - EndPos: 109, - }, - Arguments: []node.Node{ - &node.Argument{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 99, - EndPos: 101, + StartPos: 89, + EndPos: 93, }, - Variadic: false, - IsReference: false, - Expr: &expr.Variable{ + }, + Value: []byte("foo"), + }, + }, + Call: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 95, + EndPos: 98, + }, + }, + Value: []byte("bar"), + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 98, + EndPos: 109, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 99, EndPos: 101, }, - VarName: &node.Identifier{ + }, + Variadic: false, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 99, EndPos: 101, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 99, + EndPos: 101, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 103, - EndPos: 108, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 106, + StartPos: 103, EndPos: 108, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 106, EndPos: 108, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 106, + EndPos: 108, + }, + }, + Value: []byte("b"), }, }, }, @@ -926,98 +1036,120 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 113, - EndPos: 132, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 113, - EndPos: 131, + EndPos: 132, }, - Class: &name.Name{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, - StartPos: 117, - EndPos: 120, + StartPos: 113, + EndPos: 131, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 117, - EndPos: 120, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 117, + EndPos: 120, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 117, + EndPos: 120, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 120, - EndPos: 131, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 120, + EndPos: 131, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 121, - EndPos: 123, - }, - IsReference: false, - Variadic: false, - Expr: &expr.Variable{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 121, EndPos: 123, }, - VarName: &node.Identifier{ + }, + IsReference: false, + Variadic: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 121, EndPos: 123, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 121, + EndPos: 123, + }, + }, + Value: []byte("a"), }, }, }, - &node.Argument{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 125, - EndPos: 130, - }, - Variadic: true, - IsReference: false, - Expr: &expr.Variable{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, - StartPos: 128, + StartPos: 125, EndPos: 130, }, - VarName: &node.Identifier{ + }, + Variadic: true, + IsReference: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 128, EndPos: 130, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 128, + EndPos: 130, + }, + }, + Value: []byte("b"), }, }, }, @@ -1025,4643 +1157,5639 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 136, - EndPos: 180, - }, - ReturnsRef: false, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, - StartPos: 145, - EndPos: 148, + StartPos: 136, + EndPos: 180, }, - Value: "foo", }, - Params: []node.Node{ - &node.Parameter{ + ReturnsRef: false, + FunctionName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, - StartPos: 149, - EndPos: 162, + StartPos: 145, + EndPos: 148, }, - ByRef: false, - Variadic: false, - VariableType: &name.Name{ + }, + Value: []byte("foo"), + }, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, StartPos: 149, - EndPos: 152, + EndPos: 162, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 149, - EndPos: 152, + }, + ByRef: false, + Variadic: false, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 149, + EndPos: 152, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 149, + EndPos: 152, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 153, - EndPos: 157, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, StartPos: 153, EndPos: 157, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 153, + EndPos: 157, + }, + }, + Value: []byte("bar"), }, }, - DefaultValue: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 158, - EndPos: 162, - }, - Constant: &name.Name{ + DefaultValue: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, StartPos: 158, EndPos: 162, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 158, - EndPos: 162, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 158, + EndPos: 162, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 158, + EndPos: 162, + }, }, - Value: "null", + Value: []byte("null"), }, }, }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 164, - EndPos: 176, - }, - ByRef: true, - Variadic: true, - VariableType: &name.Name{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, StartPos: 164, - EndPos: 167, + EndPos: 176, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 164, - EndPos: 167, + }, + ByRef: true, + Variadic: true, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 164, + EndPos: 167, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 164, + EndPos: 167, + }, }, - Value: "baz", + Value: []byte("baz"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 172, - EndPos: 176, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 9, EndLine: 9, StartPos: 172, EndPos: 176, }, - Value: "baz", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 172, + EndPos: 176, + }, + }, + Value: []byte("baz"), }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 183, - EndPos: 246, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, - StartPos: 189, - EndPos: 192, + StartPos: 183, + EndPos: 246, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.ClassMethod{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, - StartPos: 194, - EndPos: 245, + StartPos: 189, + EndPos: 192, }, - ReturnsRef: false, - PhpDocComment: "", - MethodName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, - StartPos: 210, - EndPos: 213, + StartPos: 194, + EndPos: 245, }, - Value: "foo", }, - Modifiers: []node.Node{ - &node.Identifier{ + ReturnsRef: false, + MethodName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, - StartPos: 194, - EndPos: 200, + StartPos: 210, + EndPos: 213, }, - Value: "public", + }, + Value: []byte("foo"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 194, + EndPos: 200, + }, + }, + Value: []byte("public"), }, }, - Params: []node.Node{ - &node.Parameter{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 214, - EndPos: 227, - }, - ByRef: false, - Variadic: false, - VariableType: &name.Name{ + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, StartPos: 214, - EndPos: 217, + EndPos: 227, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 214, - EndPos: 217, + }, + ByRef: false, + Variadic: false, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 214, + EndPos: 217, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 214, + EndPos: 217, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 218, - EndPos: 222, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, StartPos: 218, EndPos: 222, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 218, + EndPos: 222, + }, + }, + Value: []byte("bar"), }, }, - DefaultValue: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 223, - EndPos: 227, - }, - Constant: &name.Name{ + DefaultValue: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, StartPos: 223, EndPos: 227, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 223, - EndPos: 227, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 223, + EndPos: 227, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 223, + EndPos: 227, + }, }, - Value: "null", + Value: []byte("null"), }, }, }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 229, - EndPos: 241, - }, - ByRef: true, - Variadic: true, - VariableType: &name.Name{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, StartPos: 229, - EndPos: 232, + EndPos: 241, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 229, - EndPos: 232, + }, + ByRef: true, + Variadic: true, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 229, + EndPos: 232, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 229, + EndPos: 232, + }, }, - Value: "baz", + Value: []byte("baz"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 237, - EndPos: 241, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 10, EndLine: 10, StartPos: 237, EndPos: 241, }, - Value: "baz", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 237, + EndPos: 241, + }, + }, + Value: []byte("baz"), }, }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 243, - EndPos: 245, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 10, + EndLine: 10, + StartPos: 243, + EndPos: 245, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 249, - EndPos: 290, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 249, - EndPos: 289, + EndPos: 290, }, - ReturnsRef: false, - Static: false, - PhpDocComment: "", - Params: []node.Node{ - &node.Parameter{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 258, - EndPos: 271, - }, - ByRef: false, - Variadic: false, - VariableType: &name.Name{ + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 249, + EndPos: 289, + }, + }, + ReturnsRef: false, + Static: false, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 258, - EndPos: 261, + EndPos: 271, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 258, - EndPos: 261, + }, + ByRef: false, + Variadic: false, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 258, + EndPos: 261, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 258, + EndPos: 261, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 262, - EndPos: 266, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 262, EndPos: 266, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 262, + EndPos: 266, + }, + }, + Value: []byte("bar"), }, }, - DefaultValue: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 267, - EndPos: 271, - }, - Constant: &name.Name{ + DefaultValue: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 267, EndPos: 271, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 267, - EndPos: 271, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 267, + EndPos: 271, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 267, + EndPos: 271, + }, }, - Value: "null", + Value: []byte("null"), }, }, }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 273, - EndPos: 285, - }, - ByRef: true, - Variadic: true, - VariableType: &name.Name{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 273, - EndPos: 276, + EndPos: 285, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 273, - EndPos: 276, + }, + ByRef: true, + Variadic: true, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 273, + EndPos: 276, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 273, + EndPos: 276, + }, }, - Value: "baz", + Value: []byte("baz"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 281, - EndPos: 285, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 11, EndLine: 11, StartPos: 281, EndPos: 285, }, - Value: "baz", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 281, + EndPos: 285, + }, + }, + Value: []byte("baz"), }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 293, - EndPos: 341, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 293, - EndPos: 340, + EndPos: 341, }, - ReturnsRef: false, - Static: true, - PhpDocComment: "", - Params: []node.Node{ - &node.Parameter{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 309, - EndPos: 322, - }, - ByRef: false, - Variadic: false, - VariableType: &name.Name{ + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 293, + EndPos: 340, + }, + }, + ReturnsRef: false, + Static: true, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 309, - EndPos: 312, + EndPos: 322, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 309, - EndPos: 312, + }, + ByRef: false, + Variadic: false, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 309, + EndPos: 312, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 309, + EndPos: 312, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 313, - EndPos: 317, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 313, EndPos: 317, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 313, + EndPos: 317, + }, + }, + Value: []byte("bar"), }, }, - DefaultValue: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 318, - EndPos: 322, - }, - Constant: &name.Name{ + DefaultValue: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 318, EndPos: 322, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 318, - EndPos: 322, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 318, + EndPos: 322, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 318, + EndPos: 322, + }, }, - Value: "null", + Value: []byte("null"), }, }, }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 324, - EndPos: 336, - }, - ByRef: true, - Variadic: true, - VariableType: &name.Name{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 324, - EndPos: 327, + EndPos: 336, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 324, - EndPos: 327, + }, + ByRef: true, + Variadic: true, + Type: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 324, + EndPos: 327, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 324, + EndPos: 327, + }, }, - Value: "baz", + Value: []byte("baz"), }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 332, - EndPos: 336, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 12, EndLine: 12, StartPos: 332, EndPos: 336, }, - Value: "baz", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 332, + EndPos: 336, + }, + }, + Value: []byte("baz"), }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 345, - EndPos: 365, - }, - Expr: &scalar.Lnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 14, EndLine: 14, StartPos: 345, - EndPos: 364, + EndPos: 365, }, - Value: "1234567890123456789", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 14, + EndLine: 14, + StartPos: 345, + EndPos: 364, + }, + }, + Value: []byte("1234567890123456789"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 368, - EndPos: 389, - }, - Expr: &scalar.Dnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 15, EndLine: 15, StartPos: 368, - EndPos: 388, + EndPos: 389, }, - Value: "12345678901234567890", + }, + Expr: &ast.ScalarDnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 15, + EndLine: 15, + StartPos: 368, + EndPos: 388, + }, + }, + Value: []byte("12345678901234567890"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 392, - EndPos: 395, - }, - Expr: &scalar.Dnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 16, EndLine: 16, StartPos: 392, - EndPos: 394, + EndPos: 395, }, - Value: "0.", + }, + Expr: &ast.ScalarDnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 16, + EndLine: 16, + StartPos: 392, + EndPos: 394, + }, + }, + Value: []byte("0."), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 17, - EndLine: 17, - StartPos: 398, - EndPos: 465, - }, - Expr: &scalar.Lnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 17, EndLine: 17, StartPos: 398, - EndPos: 464, + EndPos: 465, }, - Value: "0b0111111111111111111111111111111111111111111111111111111111111111", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 398, + EndPos: 464, + }, + }, + Value: []byte("0b0111111111111111111111111111111111111111111111111111111111111111"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 468, - EndPos: 535, - }, - Expr: &scalar.Dnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 18, EndLine: 18, StartPos: 468, - EndPos: 534, + EndPos: 535, }, - Value: "0b1111111111111111111111111111111111111111111111111111111111111111", + }, + Expr: &ast.ScalarDnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 18, + EndLine: 18, + StartPos: 468, + EndPos: 534, + }, + }, + Value: []byte("0b1111111111111111111111111111111111111111111111111111111111111111"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 538, - EndPos: 559, - }, - Expr: &scalar.Lnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 19, EndLine: 19, StartPos: 538, - EndPos: 558, + EndPos: 559, }, - Value: "0x007111111111111111", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 19, + EndLine: 19, + StartPos: 538, + EndPos: 558, + }, + }, + Value: []byte("0x007111111111111111"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 562, - EndPos: 581, - }, - Expr: &scalar.Dnumber{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 20, EndLine: 20, StartPos: 562, - EndPos: 580, + EndPos: 581, }, - Value: "0x8111111111111111", + }, + Expr: &ast.ScalarDnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 20, + EndLine: 20, + StartPos: 562, + EndPos: 580, + }, + }, + Value: []byte("0x8111111111111111"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 584, - EndPos: 594, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 21, EndLine: 21, StartPos: 584, - EndPos: 593, + EndPos: 594, }, - Value: "__CLASS__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 21, + EndLine: 21, + StartPos: 584, + EndPos: 593, + }, + }, + Value: []byte("__CLASS__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 22, - EndLine: 22, - StartPos: 597, - EndPos: 605, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 22, EndLine: 22, StartPos: 597, - EndPos: 604, + EndPos: 605, }, - Value: "__DIR__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 22, + EndLine: 22, + StartPos: 597, + EndPos: 604, + }, + }, + Value: []byte("__DIR__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 23, - EndLine: 23, - StartPos: 608, - EndPos: 617, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 23, EndLine: 23, StartPos: 608, - EndPos: 616, + EndPos: 617, }, - Value: "__FILE__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 23, + EndLine: 23, + StartPos: 608, + EndPos: 616, + }, + }, + Value: []byte("__FILE__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 24, - EndLine: 24, - StartPos: 620, - EndPos: 633, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 24, EndLine: 24, StartPos: 620, - EndPos: 632, + EndPos: 633, }, - Value: "__FUNCTION__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 24, + EndLine: 24, + StartPos: 620, + EndPos: 632, + }, + }, + Value: []byte("__FUNCTION__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 25, - EndLine: 25, - StartPos: 636, - EndPos: 645, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 25, EndLine: 25, StartPos: 636, - EndPos: 644, + EndPos: 645, }, - Value: "__LINE__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 636, + EndPos: 644, + }, + }, + Value: []byte("__LINE__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 26, - EndLine: 26, - StartPos: 648, - EndPos: 662, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 26, EndLine: 26, StartPos: 648, - EndPos: 661, + EndPos: 662, }, - Value: "__NAMESPACE__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 26, + EndLine: 26, + StartPos: 648, + EndPos: 661, + }, + }, + Value: []byte("__NAMESPACE__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 27, - EndLine: 27, - StartPos: 665, - EndPos: 676, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 27, EndLine: 27, StartPos: 665, - EndPos: 675, + EndPos: 676, }, - Value: "__METHOD__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 27, + EndLine: 27, + StartPos: 665, + EndPos: 675, + }, + }, + Value: []byte("__METHOD__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 28, - EndLine: 28, - StartPos: 679, - EndPos: 689, - }, - Expr: &scalar.MagicConstant{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 28, EndLine: 28, StartPos: 679, - EndPos: 688, + EndPos: 689, }, - Value: "__TRAIT__", + }, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 679, + EndPos: 688, + }, + }, + Value: []byte("__TRAIT__"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 30, - EndLine: 30, - StartPos: 693, - EndPos: 705, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 30, EndLine: 30, StartPos: 693, - EndPos: 704, + EndPos: 705, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 30, - EndLine: 30, - StartPos: 694, - EndPos: 699, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 30, + EndLine: 30, + StartPos: 693, + EndPos: 704, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 30, - EndLine: 30, - StartPos: 699, - EndPos: 703, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 30, + EndLine: 30, + StartPos: 694, + EndPos: 699, + }, }, - VarName: &node.Identifier{ + Value: []byte("test "), + }, + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 30, EndLine: 30, StartPos: 699, EndPos: 703, }, - Value: "var", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 30, + EndLine: 30, + StartPos: 699, + EndPos: 703, + }, + }, + Value: []byte("var"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 708, - EndPos: 723, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 31, EndLine: 31, StartPos: 708, - EndPos: 722, + EndPos: 723, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 709, - EndPos: 714, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 31, + EndLine: 31, + StartPos: 708, + EndPos: 722, }, - &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 714, - EndPos: 721, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 31, + EndLine: 31, + StartPos: 709, + EndPos: 714, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 31, EndLine: 31, StartPos: 714, - EndPos: 718, + EndPos: 721, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 31, EndLine: 31, StartPos: 714, EndPos: 718, }, - Value: "var", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 31, + EndLine: 31, + StartPos: 714, + EndPos: 718, + }, + }, + Value: []byte("var"), }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 719, - EndPos: 720, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 31, + EndLine: 31, + StartPos: 719, + EndPos: 720, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 726, - EndPos: 780, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 32, EndLine: 32, StartPos: 726, - EndPos: 779, + EndPos: 780, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 727, - EndPos: 732, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 32, + EndLine: 32, + StartPos: 726, + EndPos: 779, }, - &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 732, - EndPos: 778, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 32, + EndLine: 32, + StartPos: 727, + EndPos: 732, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 32, EndLine: 32, StartPos: 732, - EndPos: 736, + EndPos: 778, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 32, EndLine: 32, StartPos: 732, EndPos: 736, }, - Value: "var", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 32, + EndLine: 32, + StartPos: 732, + EndPos: 736, + }, + }, + Value: []byte("var"), }, }, - Dim: &scalar.String{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 737, - EndPos: 777, + Dim: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 32, + EndLine: 32, + StartPos: 737, + EndPos: 777, + }, }, - Value: "1234567890123456789012345678901234567890", + Value: []byte("1234567890123456789012345678901234567890"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 783, - EndPos: 800, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 33, EndLine: 33, StartPos: 783, - EndPos: 799, + EndPos: 800, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 784, - EndPos: 789, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 33, + EndLine: 33, + StartPos: 783, + EndPos: 799, }, - &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 789, - EndPos: 798, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 33, + EndLine: 33, + StartPos: 784, + EndPos: 789, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 33, EndLine: 33, StartPos: 789, - EndPos: 793, + EndPos: 798, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 33, EndLine: 33, StartPos: 789, EndPos: 793, }, - Value: "var", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 33, + EndLine: 33, + StartPos: 789, + EndPos: 793, + }, + }, + Value: []byte("var"), }, }, - Dim: &scalar.String{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 794, - EndPos: 797, + Dim: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 33, + EndLine: 33, + StartPos: 794, + EndPos: 797, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 803, - EndPos: 821, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 34, EndLine: 34, StartPos: 803, - EndPos: 820, + EndPos: 821, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 804, - EndPos: 809, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 34, + EndLine: 34, + StartPos: 803, + EndPos: 820, }, - &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 809, - EndPos: 819, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 34, + EndLine: 34, + StartPos: 804, + EndPos: 809, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 34, EndLine: 34, StartPos: 809, - EndPos: 813, + EndPos: 819, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 34, EndLine: 34, StartPos: 809, EndPos: 813, }, - Value: "var", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 34, + EndLine: 34, + StartPos: 809, + EndPos: 813, + }, + }, + Value: []byte("var"), }, }, - Dim: &expr.Variable{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 814, - EndPos: 818, - }, - VarName: &node.Identifier{ + Dim: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 34, EndLine: 34, StartPos: 814, EndPos: 818, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 34, + EndLine: 34, + StartPos: 814, + EndPos: 818, + }, + }, + Value: []byte("bar"), }, }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 824, - EndPos: 836, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 35, EndLine: 35, StartPos: 824, - EndPos: 835, + EndPos: 836, }, - Parts: []node.Node{ - &expr.Variable{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 825, - EndPos: 829, - }, - VarName: &node.Identifier{ + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 35, + EndLine: 35, + StartPos: 824, + EndPos: 835, + }, + }, + Parts: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 35, EndLine: 35, StartPos: 825, EndPos: 829, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 35, + EndLine: 35, + StartPos: 825, + EndPos: 829, + }, + }, + Value: []byte("foo"), }, }, - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 829, - EndPos: 830, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 35, + EndLine: 35, + StartPos: 829, + EndPos: 830, + }, }, - Value: " ", + Value: []byte(" "), }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 830, - EndPos: 834, - }, - VarName: &node.Identifier{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 35, EndLine: 35, StartPos: 830, EndPos: 834, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 35, + EndLine: 35, + StartPos: 830, + EndPos: 834, + }, + }, + Value: []byte("bar"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 839, - EndPos: 858, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 36, EndLine: 36, StartPos: 839, - EndPos: 857, + EndPos: 858, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 840, - EndPos: 845, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 36, + EndLine: 36, + StartPos: 839, + EndPos: 857, }, - &expr.PropertyFetch{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 845, - EndPos: 854, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 36, + EndLine: 36, + StartPos: 840, + EndPos: 845, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 36, EndLine: 36, StartPos: 845, - EndPos: 849, + EndPos: 854, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 36, EndLine: 36, StartPos: 845, EndPos: 849, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 36, + EndLine: 36, + StartPos: 845, + EndPos: 849, + }, + }, + Value: []byte("foo"), }, }, - Property: &node.Identifier{ + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 36, + EndLine: 36, + StartPos: 851, + EndPos: 854, + }, + }, + Value: []byte("bar"), + }, + }, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ Position: &position.Position{ StartLine: 36, EndLine: 36, - StartPos: 851, - EndPos: 854, + StartPos: 854, + EndPos: 856, }, - Value: "bar", }, - }, - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 854, - EndPos: 856, - }, - Value: "()", + Value: []byte("()"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 37, - EndLine: 37, - StartPos: 861, - EndPos: 875, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 37, EndLine: 37, StartPos: 861, - EndPos: 874, + EndPos: 875, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 37, - EndLine: 37, - StartPos: 862, - EndPos: 867, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 37, + EndLine: 37, + StartPos: 861, + EndPos: 874, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 37, - EndLine: 37, - StartPos: 867, - EndPos: 873, - }, - VarName: &node.Identifier{ + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ Position: &position.Position{ StartLine: 37, EndLine: 37, - StartPos: 869, - EndPos: 872, + StartPos: 862, + EndPos: 867, }, - Value: "foo", + }, + Value: []byte("test "), + }, + &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 37, + EndLine: 37, + StartPos: 867, + EndPos: 873, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 37, + EndLine: 37, + StartPos: 869, + EndPos: 872, + }, + }, + Value: []byte("foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 38, - EndLine: 38, - StartPos: 878, - EndPos: 895, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 38, EndLine: 38, StartPos: 878, - EndPos: 894, + EndPos: 895, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 38, - EndLine: 38, - StartPos: 879, - EndPos: 884, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 38, + EndLine: 38, + StartPos: 878, + EndPos: 894, }, - &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 38, - EndLine: 38, - StartPos: 884, - EndPos: 893, - }, - Variable: &expr.Variable{ + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ Position: &position.Position{ StartLine: 38, EndLine: 38, - StartPos: 886, - EndPos: 889, + StartPos: 879, + EndPos: 884, }, - VarName: &node.Identifier{ + }, + Value: []byte("test "), + }, + &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 38, + EndLine: 38, + StartPos: 884, + EndPos: 893, + }, + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 38, EndLine: 38, StartPos: 886, EndPos: 889, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 38, + EndLine: 38, + StartPos: 886, + EndPos: 889, + }, + }, + Value: []byte("foo"), }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 38, - EndLine: 38, - StartPos: 890, - EndPos: 891, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 38, + EndLine: 38, + StartPos: 890, + EndPos: 891, + }, }, - Value: "0", + Value: []byte("0"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 898, - EndPos: 919, - }, - Expr: &scalar.Encapsed{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 39, EndLine: 39, StartPos: 898, - EndPos: 918, + EndPos: 919, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 899, - EndPos: 904, - }, - Value: "test ", + }, + Expr: &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 39, + EndLine: 39, + StartPos: 898, + EndPos: 918, }, - &expr.MethodCall{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 905, - EndPos: 916, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 39, + EndLine: 39, + StartPos: 899, + EndPos: 904, + }, }, - Variable: &expr.Variable{ + Value: []byte("test "), + }, + &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 39, EndLine: 39, StartPos: 905, - EndPos: 909, + EndPos: 916, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 39, EndLine: 39, StartPos: 905, EndPos: 909, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 39, + EndLine: 39, + StartPos: 905, + EndPos: 909, + }, + }, + Value: []byte("foo"), }, }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 911, - EndPos: 914, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 39, + EndLine: 39, + StartPos: 911, + EndPos: 914, + }, }, - Value: "bar", + Value: []byte("bar"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 914, - EndPos: 916, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 39, + EndLine: 39, + StartPos: 914, + EndPos: 916, + }, }, }, }, }, }, }, - &stmt.AltIf{ - Position: &position.Position{ - StartLine: 41, - EndLine: 42, - StartPos: 923, - EndPos: 941, - }, - Cond: &expr.Variable{ + &ast.StmtAltIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 41, - EndLine: 41, - StartPos: 927, - EndPos: 929, + EndLine: 42, + StartPos: 923, + EndPos: 941, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 41, EndLine: 41, StartPos: 927, EndPos: 929, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 41, + EndLine: 41, + StartPos: 927, + EndPos: 929, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.AltIf{ - Position: &position.Position{ - StartLine: 43, - EndLine: 45, - StartPos: 944, - EndPos: 977, - }, - Cond: &expr.Variable{ + &ast.StmtAltIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 43, - EndLine: 43, - StartPos: 948, - EndPos: 950, + EndLine: 45, + StartPos: 944, + EndPos: 977, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 43, EndLine: 43, StartPos: 948, EndPos: 950, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 43, + EndLine: 43, + StartPos: 948, + EndPos: 950, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - ElseIf: []node.Node{ - &stmt.AltElseIf{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 44, + StartLine: -1, EndLine: -1, - StartPos: 956, + StartPos: -1, EndPos: -1, }, - Cond: &expr.Variable{ + }, + Stmts: []ast.Vertex{}, + }, + ElseIf: []ast.Vertex{ + &ast.StmtAltElseIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 44, - EndLine: 44, - StartPos: 964, - EndPos: 966, + EndLine: -1, + StartPos: 956, + EndPos: -1, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 44, EndLine: 44, StartPos: 964, EndPos: 966, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 44, + EndLine: 44, + StartPos: 964, + EndPos: 966, + }, + }, + Value: []byte("b"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.AltIf{ - Position: &position.Position{ - StartLine: 46, - EndLine: 48, - StartPos: 980, - EndPos: 1006, - }, - Cond: &expr.Variable{ + &ast.StmtAltIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 46, - EndLine: 46, - StartPos: 984, - EndPos: 986, + EndLine: 48, + StartPos: 980, + EndPos: 1006, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 46, EndLine: 46, StartPos: 984, EndPos: 986, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 46, + EndLine: 46, + StartPos: 984, + EndPos: 986, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - Else: &stmt.AltElse{ - Position: &position.Position{ - StartLine: 47, - EndLine: -1, - StartPos: 992, - EndPos: -1, - }, - Stmt: &stmt.StmtList{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ StartLine: -1, EndLine: -1, StartPos: -1, EndPos: -1, }, - Stmts: []node.Node{}, + }, + Stmts: []ast.Vertex{}, + }, + Else: &ast.StmtAltElse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 47, + EndLine: -1, + StartPos: 992, + EndPos: -1, + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.AltIf{ - Position: &position.Position{ - StartLine: 49, - EndLine: 53, - StartPos: 1009, - EndPos: 1065, - }, - Cond: &expr.Variable{ + &ast.StmtAltIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 49, - EndLine: 49, - StartPos: 1013, - EndPos: 1015, + EndLine: 53, + StartPos: 1009, + EndPos: 1065, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 49, EndLine: 49, StartPos: 1013, EndPos: 1015, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 49, + EndLine: 49, + StartPos: 1013, + EndPos: 1015, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - ElseIf: []node.Node{ - &stmt.AltElseIf{ - Position: &position.Position{ - StartLine: 50, - EndLine: -1, - StartPos: 1021, - EndPos: -1, - }, - Cond: &expr.Variable{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1029, - EndPos: 1031, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1029, - EndPos: 1031, - }, - Value: "b", - }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - }, - &stmt.AltElseIf{ - Position: &position.Position{ - StartLine: 51, - EndLine: -1, - StartPos: 1036, - EndPos: -1, - }, - Cond: &expr.Variable{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1044, - EndPos: 1046, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1044, - EndPos: 1046, - }, - Value: "c", - }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - }, - }, - Else: &stmt.AltElse{ - Position: &position.Position{ - StartLine: 52, - EndLine: -1, - StartPos: 1051, - EndPos: -1, - }, - Stmt: &stmt.StmtList{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ StartLine: -1, EndLine: -1, StartPos: -1, EndPos: -1, }, - Stmts: []node.Node{}, + }, + Stmts: []ast.Vertex{}, + }, + ElseIf: []ast.Vertex{ + &ast.StmtAltElseIf{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 50, + EndLine: -1, + StartPos: 1021, + EndPos: -1, + }, + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 50, + EndLine: 50, + StartPos: 1029, + EndPos: 1031, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 50, + EndLine: 50, + StartPos: 1029, + EndPos: 1031, + }, + }, + Value: []byte("b"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, + }, + Stmts: []ast.Vertex{}, + }, + }, + &ast.StmtAltElseIf{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 51, + EndLine: -1, + StartPos: 1036, + EndPos: -1, + }, + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 51, + EndLine: 51, + StartPos: 1044, + EndPos: 1046, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 51, + EndLine: 51, + StartPos: 1044, + EndPos: 1046, + }, + }, + Value: []byte("c"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, + }, + Stmts: []ast.Vertex{}, + }, + }, + }, + Else: &ast.StmtAltElse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 52, + EndLine: -1, + StartPos: 1051, + EndPos: -1, + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.While{ - Position: &position.Position{ - StartLine: 55, - EndLine: 55, - StartPos: 1069, - EndPos: 1089, - }, - Cond: &scalar.Lnumber{ + &ast.StmtWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 55, EndLine: 55, - StartPos: 1076, - EndPos: 1077, - }, - Value: "1", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 55, - EndLine: 55, - StartPos: 1079, + StartPos: 1069, EndPos: 1089, }, - Stmts: []node.Node{ - &stmt.Break{ - Position: &position.Position{ - StartLine: 55, - EndLine: 55, - StartPos: 1081, - EndPos: 1087, + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 55, + EndLine: 55, + StartPos: 1076, + EndPos: 1077, + }, + }, + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 55, + EndLine: 55, + StartPos: 1079, + EndPos: 1089, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 55, + EndLine: 55, + StartPos: 1081, + EndPos: 1087, + }, }, }, }, }, }, - &stmt.While{ - Position: &position.Position{ - StartLine: 56, - EndLine: 56, - StartPos: 1092, - EndPos: 1114, - }, - Cond: &scalar.Lnumber{ + &ast.StmtWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 56, EndLine: 56, - StartPos: 1099, - EndPos: 1100, - }, - Value: "1", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 56, - EndLine: 56, - StartPos: 1102, + StartPos: 1092, EndPos: 1114, }, - Stmts: []node.Node{ - &stmt.Break{ - Position: &position.Position{ - StartLine: 56, - EndLine: 56, - StartPos: 1104, - EndPos: 1112, - }, - Expr: &scalar.Lnumber{ + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 56, + EndLine: 56, + StartPos: 1099, + EndPos: 1100, + }, + }, + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 56, + EndLine: 56, + StartPos: 1102, + EndPos: 1114, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ Position: &position.Position{ StartLine: 56, EndLine: 56, - StartPos: 1110, - EndPos: 1111, + StartPos: 1104, + EndPos: 1112, }, - Value: "2", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 56, + EndLine: 56, + StartPos: 1110, + EndPos: 1111, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.AltWhile{ - Position: &position.Position{ - StartLine: 57, - EndLine: 57, - StartPos: 1117, - EndPos: 1148, - }, - Cond: &scalar.Lnumber{ + &ast.StmtAltWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 57, EndLine: 57, - StartPos: 1124, - EndPos: 1125, + StartPos: 1117, + EndPos: 1148, }, - Value: "1", }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 57, - EndLine: 57, - StartPos: 1129, - EndPos: 1138, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 57, + EndLine: 57, + StartPos: 1124, + EndPos: 1125, + }, }, - Stmts: []node.Node{ - &stmt.Break{ - Position: &position.Position{ - StartLine: 57, - EndLine: 57, - StartPos: 1129, - EndPos: 1138, - }, - Expr: &scalar.Lnumber{ + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 57, + EndLine: 57, + StartPos: 1129, + EndPos: 1138, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ Position: &position.Position{ StartLine: 57, EndLine: 57, - StartPos: 1135, - EndPos: 1136, + StartPos: 1129, + EndPos: 1138, }, - Value: "3", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 57, + EndLine: 57, + StartPos: 1135, + EndPos: 1136, + }, + }, + Value: []byte("3"), }, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1151, - EndPos: 1187, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 58, EndLine: 58, - StartPos: 1157, - EndPos: 1160, + StartPos: 1151, + EndPos: 1187, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.ClassConstList{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 58, EndLine: 58, - StartPos: 1162, - EndPos: 1185, + StartPos: 1157, + EndPos: 1160, }, - Consts: []node.Node{ - &stmt.Constant{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1168, - EndPos: 1175, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtClassConstList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 58, + EndLine: 58, + StartPos: 1162, + EndPos: 1185, + }, + }, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 58, EndLine: 58, StartPos: 1168, - EndPos: 1171, - }, - Value: "FOO", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1174, EndPos: 1175, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 58, + EndLine: 58, + StartPos: 1168, + EndPos: 1171, + }, + }, + Value: []byte("FOO"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 58, + EndLine: 58, + StartPos: 1174, + EndPos: 1175, + }, + }, + Value: []byte("1"), }, }, - &stmt.Constant{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1177, - EndPos: 1184, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 58, EndLine: 58, StartPos: 1177, - EndPos: 1180, - }, - Value: "BAR", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1183, EndPos: 1184, }, - Value: "2", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 58, + EndLine: 58, + StartPos: 1177, + EndPos: 1180, + }, + }, + Value: []byte("BAR"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 58, + EndLine: 58, + StartPos: 1183, + EndPos: 1184, + }, + }, + Value: []byte("2"), }, }, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 59, - EndLine: 59, - StartPos: 1190, - EndPos: 1220, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 59, EndLine: 59, - StartPos: 1196, - EndPos: 1199, + StartPos: 1190, + EndPos: 1220, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.ClassMethod{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 59, EndLine: 59, - StartPos: 1201, - EndPos: 1218, + StartPos: 1196, + EndPos: 1199, }, - ReturnsRef: false, - PhpDocComment: "", - MethodName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 59, EndLine: 59, - StartPos: 1210, - EndPos: 1213, - }, - Value: "bar", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 59, - EndLine: 59, - StartPos: 1216, + StartPos: 1201, EndPos: 1218, }, - Stmts: []node.Node{}, + }, + ReturnsRef: false, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 59, + EndLine: 59, + StartPos: 1210, + EndPos: 1213, + }, + }, + Value: []byte("bar"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 59, + EndLine: 59, + StartPos: 1216, + EndPos: 1218, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 60, - EndLine: 60, - StartPos: 1223, - EndPos: 1268, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 60, EndLine: 60, - StartPos: 1229, - EndPos: 1232, + StartPos: 1223, + EndPos: 1268, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.ClassMethod{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 60, EndLine: 60, - StartPos: 1234, - EndPos: 1266, + StartPos: 1229, + EndPos: 1232, }, - ReturnsRef: true, - PhpDocComment: "", - MethodName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 60, EndLine: 60, - StartPos: 1258, - EndPos: 1261, - }, - Value: "bar", - }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 60, - EndLine: 60, - StartPos: 1234, - EndPos: 1240, - }, - Value: "public", - }, - &node.Identifier{ - Position: &position.Position{ - StartLine: 60, - EndLine: 60, - StartPos: 1241, - EndPos: 1247, - }, - Value: "static", - }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 60, - EndLine: 60, - StartPos: 1264, + StartPos: 1234, EndPos: 1266, }, - Stmts: []node.Node{}, + }, + ReturnsRef: true, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 60, + EndLine: 60, + StartPos: 1258, + EndPos: 1261, + }, + }, + Value: []byte("bar"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 60, + EndLine: 60, + StartPos: 1234, + EndPos: 1240, + }, + }, + Value: []byte("public"), + }, + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 60, + EndLine: 60, + StartPos: 1241, + EndPos: 1247, + }, + }, + Value: []byte("static"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 60, + EndLine: 60, + StartPos: 1264, + EndPos: 1266, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1271, - EndPos: 1343, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 61, EndLine: 61, - StartPos: 1277, - EndPos: 1280, + StartPos: 1271, + EndPos: 1343, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.ClassMethod{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 61, EndLine: 61, - StartPos: 1282, - EndPos: 1313, + StartPos: 1277, + EndPos: 1280, }, - ReturnsRef: false, - PhpDocComment: "", - MethodName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 61, EndLine: 61, - StartPos: 1305, - EndPos: 1308, - }, - Value: "bar", - }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1282, - EndPos: 1287, - }, - Value: "final", - }, - &node.Identifier{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1288, - EndPos: 1295, - }, - Value: "private", - }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1311, + StartPos: 1282, EndPos: 1313, }, - Stmts: []node.Node{}, }, - }, - &stmt.ClassMethod{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1314, - EndPos: 1341, - }, - ReturnsRef: false, - PhpDocComment: "", - MethodName: &node.Identifier{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1333, - EndPos: 1336, - }, - Value: "baz", - }, - Modifiers: []node.Node{ - &node.Identifier{ + ReturnsRef: false, + MethodName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 61, EndLine: 61, - StartPos: 1314, - EndPos: 1323, + StartPos: 1305, + EndPos: 1308, }, - Value: "protected", + }, + Value: []byte("bar"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1282, + EndPos: 1287, + }, + }, + Value: []byte("final"), + }, + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1288, + EndPos: 1295, + }, + }, + Value: []byte("private"), }, }, - Stmt: &stmt.StmtList{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1311, + EndPos: 1313, + }, + }, + Stmts: []ast.Vertex{}, + }, + }, + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 61, EndLine: 61, - StartPos: 1339, + StartPos: 1314, EndPos: 1341, }, - Stmts: []node.Node{}, + }, + ReturnsRef: false, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1333, + EndPos: 1336, + }, + }, + Value: []byte("baz"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1314, + EndPos: 1323, + }, + }, + Value: []byte("protected"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 61, + EndLine: 61, + StartPos: 1339, + EndPos: 1341, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1346, - EndPos: 1399, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 62, EndLine: 62, - StartPos: 1361, - EndPos: 1364, + StartPos: 1346, + EndPos: 1399, }, - Value: "foo", }, - Modifiers: []node.Node{ - &node.Identifier{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 62, EndLine: 62, - StartPos: 1346, - EndPos: 1354, + StartPos: 1361, + EndPos: 1364, }, - Value: "abstract", + }, + Value: []byte("foo"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 62, + EndLine: 62, + StartPos: 1346, + EndPos: 1354, + }, + }, + Value: []byte("abstract"), }, }, - Stmts: []node.Node{ - &stmt.ClassMethod{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1366, - EndPos: 1397, - }, - ReturnsRef: false, - PhpDocComment: "", - MethodName: &node.Identifier{ + Stmts: []ast.Vertex{ + &ast.StmtClassMethod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 62, EndLine: 62, - StartPos: 1391, - EndPos: 1394, - }, - Value: "bar", - }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1366, - EndPos: 1374, - }, - Value: "abstract", - }, - &node.Identifier{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1375, - EndPos: 1381, - }, - Value: "public", - }, - }, - Stmt: &stmt.Nop{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1396, + StartPos: 1366, EndPos: 1397, }, }, - }, - }, - }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1402, - EndPos: 1433, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1414, - EndPos: 1417, - }, - Value: "foo", - }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1402, - EndPos: 1407, - }, - Value: "final", - }, - }, - Extends: &stmt.ClassExtends{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1418, - EndPos: 1429, - }, - ClassName: &name.Name{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1426, - EndPos: 1429, - }, - Parts: []node.Node{ - &name.NamePart{ + ReturnsRef: false, + MethodName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1426, - EndPos: 1429, + StartLine: 62, + EndLine: 62, + StartPos: 1391, + EndPos: 1394, + }, + }, + Value: []byte("bar"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 62, + EndLine: 62, + StartPos: 1366, + EndPos: 1374, + }, + }, + Value: []byte("abstract"), + }, + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 62, + EndLine: 62, + StartPos: 1375, + EndPos: 1381, + }, + }, + Value: []byte("public"), + }, + }, + Stmt: &ast.StmtNop{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 62, + EndLine: 62, + StartPos: 1396, + EndPos: 1397, }, - Value: "bar", }, }, }, }, - Stmts: []node.Node{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 64, - EndLine: 64, - StartPos: 1436, - EndPos: 1470, + &ast.StmtClass{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1402, + EndPos: 1433, + }, }, - PhpDocComment: "", - ClassName: &node.Identifier{ + ClassName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1414, + EndPos: 1417, + }, + }, + Value: []byte("foo"), + }, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1402, + EndPos: 1407, + }, + }, + Value: []byte("final"), + }, + }, + Extends: &ast.StmtClassExtends{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1418, + EndPos: 1429, + }, + }, + ClassName: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1426, + EndPos: 1429, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 63, + EndLine: 63, + StartPos: 1426, + EndPos: 1429, + }, + }, + Value: []byte("bar"), + }, + }, + }, + }, + Stmts: []ast.Vertex{}, + }, + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 64, EndLine: 64, - StartPos: 1448, - EndPos: 1451, + StartPos: 1436, + EndPos: 1470, }, - Value: "foo", }, - Modifiers: []node.Node{ - &node.Identifier{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 64, EndLine: 64, - StartPos: 1436, - EndPos: 1441, + StartPos: 1448, + EndPos: 1451, }, - Value: "final", }, + Value: []byte("foo"), }, - Implements: &stmt.ClassImplements{ - Position: &position.Position{ - StartLine: 64, - EndLine: 64, - StartPos: 1452, - EndPos: 1466, - }, - InterfaceNames: []node.Node{ - &name.Name{ + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 64, EndLine: 64, - StartPos: 1463, - EndPos: 1466, + StartPos: 1436, + EndPos: 1441, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 64, - EndLine: 64, - StartPos: 1463, - EndPos: 1466, + }, + Value: []byte("final"), + }, + }, + Implements: &ast.StmtClassImplements{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 64, + EndLine: 64, + StartPos: 1452, + EndPos: 1466, + }, + }, + InterfaceNames: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 64, + EndLine: 64, + StartPos: 1463, + EndPos: 1466, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 64, + EndLine: 64, + StartPos: 1463, + EndPos: 1466, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 65, - EndLine: 65, - StartPos: 1473, - EndPos: 1512, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 65, EndLine: 65, - StartPos: 1485, - EndPos: 1488, + StartPos: 1473, + EndPos: 1512, }, - Value: "foo", }, - Modifiers: []node.Node{ - &node.Identifier{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 65, EndLine: 65, - StartPos: 1473, - EndPos: 1478, + StartPos: 1485, + EndPos: 1488, }, - Value: "final", }, + Value: []byte("foo"), }, - Implements: &stmt.ClassImplements{ - Position: &position.Position{ - StartLine: 65, - EndLine: 65, - StartPos: 1489, - EndPos: 1508, - }, - InterfaceNames: []node.Node{ - &name.Name{ + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 65, EndLine: 65, - StartPos: 1500, - EndPos: 1503, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 65, - EndLine: 65, - StartPos: 1500, - EndPos: 1503, - }, - Value: "bar", - }, - }, - }, - &name.Name{ - Position: &position.Position{ - StartLine: 65, - EndLine: 65, - StartPos: 1505, - EndPos: 1508, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 65, - EndLine: 65, - StartPos: 1505, - EndPos: 1508, - }, - Value: "baz", - }, + StartPos: 1473, + EndPos: 1478, }, }, + Value: []byte("final"), }, }, - Stmts: []node.Node{}, - }, - &stmt.ConstList{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1516, - EndPos: 1539, - }, - Consts: []node.Node{ - &stmt.Constant{ + Implements: &ast.StmtClassImplements{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1522, - EndPos: 1529, + StartLine: 65, + EndLine: 65, + StartPos: 1489, + EndPos: 1508, }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + }, + InterfaceNames: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 65, + EndLine: 65, + StartPos: 1500, + EndPos: 1503, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 65, + EndLine: 65, + StartPos: 1500, + EndPos: 1503, + }, + }, + Value: []byte("bar"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 65, + EndLine: 65, + StartPos: 1505, + EndPos: 1508, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 65, + EndLine: 65, + StartPos: 1505, + EndPos: 1508, + }, + }, + Value: []byte("baz"), + }, + }, + }, + }, + }, + Stmts: []ast.Vertex{}, + }, + &ast.StmtConstList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 67, + EndLine: 67, + StartPos: 1516, + EndPos: 1539, + }, + }, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 67, EndLine: 67, StartPos: 1522, - EndPos: 1525, - }, - Value: "FOO", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1528, EndPos: 1529, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 67, + EndLine: 67, + StartPos: 1522, + EndPos: 1525, + }, + }, + Value: []byte("FOO"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 67, + EndLine: 67, + StartPos: 1528, + EndPos: 1529, + }, + }, + Value: []byte("1"), }, }, - &stmt.Constant{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1531, - EndPos: 1538, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 67, EndLine: 67, StartPos: 1531, - EndPos: 1534, - }, - Value: "BAR", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1537, EndPos: 1538, }, - Value: "2", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 67, + EndLine: 67, + StartPos: 1531, + EndPos: 1534, + }, + }, + Value: []byte("BAR"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 67, + EndLine: 67, + StartPos: 1537, + EndPos: 1538, + }, + }, + Value: []byte("2"), }, }, }, }, - &stmt.While{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1542, - EndPos: 1565, - }, - Cond: &scalar.Lnumber{ + &ast.StmtWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 68, EndLine: 68, - StartPos: 1549, - EndPos: 1550, - }, - Value: "1", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1552, + StartPos: 1542, EndPos: 1565, }, - Stmts: []node.Node{ - &stmt.Continue{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1554, - EndPos: 1563, + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 68, + EndLine: 68, + StartPos: 1549, + EndPos: 1550, + }, + }, + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 68, + EndLine: 68, + StartPos: 1552, + EndPos: 1565, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtContinue{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 68, + EndLine: 68, + StartPos: 1554, + EndPos: 1563, + }, }, }, }, }, }, - &stmt.While{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1568, - EndPos: 1593, - }, - Cond: &scalar.Lnumber{ + &ast.StmtWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 69, EndLine: 69, - StartPos: 1575, - EndPos: 1576, - }, - Value: "1", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1578, + StartPos: 1568, EndPos: 1593, }, - Stmts: []node.Node{ - &stmt.Continue{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1580, - EndPos: 1591, - }, - Expr: &scalar.Lnumber{ + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 69, + EndLine: 69, + StartPos: 1575, + EndPos: 1576, + }, + }, + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 69, + EndLine: 69, + StartPos: 1578, + EndPos: 1593, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtContinue{ + Node: ast.Node{ Position: &position.Position{ StartLine: 69, EndLine: 69, - StartPos: 1589, - EndPos: 1590, + StartPos: 1580, + EndPos: 1591, }, - Value: "2", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 69, + EndLine: 69, + StartPos: 1589, + EndPos: 1590, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.While{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1596, - EndPos: 1622, - }, - Cond: &scalar.Lnumber{ + &ast.StmtWhile{ + Node: ast.Node{ Position: &position.Position{ StartLine: 70, EndLine: 70, - StartPos: 1603, - EndPos: 1604, - }, - Value: "1", - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1606, + StartPos: 1596, EndPos: 1622, }, - Stmts: []node.Node{ - &stmt.Continue{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1608, - EndPos: 1620, - }, - Expr: &scalar.Lnumber{ + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 70, + EndLine: 70, + StartPos: 1603, + EndPos: 1604, + }, + }, + Value: []byte("1"), + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 70, + EndLine: 70, + StartPos: 1606, + EndPos: 1622, + }, + }, + Stmts: []ast.Vertex{ + &ast.StmtContinue{ + Node: ast.Node{ Position: &position.Position{ StartLine: 70, EndLine: 70, - StartPos: 1617, - EndPos: 1618, + StartPos: 1608, + EndPos: 1620, }, - Value: "3", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 70, + EndLine: 70, + StartPos: 1617, + EndPos: 1618, + }, + }, + Value: []byte("3"), }, }, }, }, }, - &stmt.Declare{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1625, - EndPos: 1642, + &ast.StmtDeclare{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 71, + EndLine: 71, + StartPos: 1625, + EndPos: 1642, + }, }, Alt: false, - Consts: []node.Node{ - &stmt.Constant{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1633, - EndPos: 1640, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 71, EndLine: 71, StartPos: 1633, - EndPos: 1638, - }, - Value: "ticks", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1639, EndPos: 1640, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 71, + EndLine: 71, + StartPos: 1633, + EndPos: 1638, + }, + }, + Value: []byte("ticks"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 71, + EndLine: 71, + StartPos: 1639, + EndPos: 1640, + }, + }, + Value: []byte("1"), }, }, }, - Stmt: &stmt.Nop{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1641, - EndPos: 1642, + Stmt: &ast.StmtNop{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 71, + EndLine: 71, + StartPos: 1641, + EndPos: 1642, + }, }, }, }, - &stmt.Declare{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1645, - EndPos: 1680, + &ast.StmtDeclare{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1645, + EndPos: 1680, + }, }, Alt: false, - Consts: []node.Node{ - &stmt.Constant{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1653, - EndPos: 1660, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 72, EndLine: 72, StartPos: 1653, - EndPos: 1658, - }, - Value: "ticks", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1659, EndPos: 1660, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1653, + EndPos: 1658, + }, + }, + Value: []byte("ticks"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1659, + EndPos: 1660, + }, + }, + Value: []byte("1"), }, }, - &stmt.Constant{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1662, - EndPos: 1676, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 72, EndLine: 72, StartPos: 1662, - EndPos: 1674, - }, - Value: "strict_types", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1675, EndPos: 1676, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1662, + EndPos: 1674, + }, + }, + Value: []byte("strict_types"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1675, + EndPos: 1676, + }, + }, + Value: []byte("1"), }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1678, - EndPos: 1680, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 72, + EndLine: 72, + StartPos: 1678, + EndPos: 1680, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Declare{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1683, - EndPos: 1712, + &ast.StmtDeclare{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 73, + EndLine: 73, + StartPos: 1683, + EndPos: 1712, + }, }, Alt: true, - Consts: []node.Node{ - &stmt.Constant{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1691, - EndPos: 1698, - }, - PhpDocComment: "", - ConstantName: &node.Identifier{ + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ Position: &position.Position{ StartLine: 73, EndLine: 73, StartPos: 1691, - EndPos: 1696, - }, - Value: "ticks", - }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1697, EndPos: 1698, }, - Value: "1", + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 73, + EndLine: 73, + StartPos: 1691, + EndPos: 1696, + }, + }, + Value: []byte("ticks"), + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 73, + EndLine: 73, + StartPos: 1697, + EndPos: 1698, + }, + }, + Value: []byte("1"), }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - Stmts: []node.Node{}, - }, - }, - &stmt.Do{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1715, - EndPos: 1730, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1718, - EndPos: 1720, - }, - Stmts: []node.Node{}, - }, - Cond: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1727, - EndPos: 1728, - }, - Value: "1", - }, - }, - &stmt.Echo{ - Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1733, - EndPos: 1744, - }, - Exprs: []node.Node{ - &expr.Variable{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1738, - EndPos: 1740, + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, }, - VarName: &node.Identifier{ + }, + Stmts: []ast.Vertex{}, + }, + }, + &ast.StmtDo{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 74, + EndLine: 74, + StartPos: 1715, + EndPos: 1730, + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 74, + EndLine: 74, + StartPos: 1718, + EndPos: 1720, + }, + }, + Stmts: []ast.Vertex{}, + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 74, + EndLine: 74, + StartPos: 1727, + EndPos: 1728, + }, + }, + Value: []byte("1"), + }, + }, + &ast.StmtEcho{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 75, + EndLine: 75, + StartPos: 1733, + EndPos: 1744, + }, + }, + Exprs: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 75, EndLine: 75, StartPos: 1738, EndPos: 1740, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 75, + EndLine: 75, + StartPos: 1738, + EndPos: 1740, + }, + }, + Value: []byte("a"), }, }, - &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1742, - EndPos: 1743, + &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 75, + EndLine: 75, + StartPos: 1742, + EndPos: 1743, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, - &stmt.Echo{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1747, - EndPos: 1756, + &ast.StmtEcho{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 76, + EndLine: 76, + StartPos: 1747, + EndPos: 1756, + }, }, - Exprs: []node.Node{ - &expr.Variable{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1752, - EndPos: 1754, - }, - VarName: &node.Identifier{ + Exprs: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 76, EndLine: 76, StartPos: 1752, EndPos: 1754, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 76, + EndLine: 76, + StartPos: 1752, + EndPos: 1754, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.For{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1759, - EndPos: 1794, + &ast.StmtFor{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1759, + EndPos: 1794, + }, }, - Init: []node.Node{ - &assign.Assign{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1763, - EndPos: 1769, - }, - Variable: &expr.Variable{ + Init: []ast.Vertex{ + &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1763, - EndPos: 1765, + EndPos: 1769, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1763, EndPos: 1765, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1763, + EndPos: 1765, + }, + }, + Value: []byte("i"), }, }, - Expression: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1768, - EndPos: 1769, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1768, + EndPos: 1769, + }, }, - Value: "0", + Value: []byte("0"), }, }, }, - Cond: []node.Node{ - &binary.Smaller{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1771, - EndPos: 1778, - }, - Left: &expr.Variable{ + Cond: []ast.Vertex{ + &ast.ExprBinarySmaller{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1771, - EndPos: 1773, + EndPos: 1778, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1771, EndPos: 1773, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1771, + EndPos: 1773, + }, + }, + Value: []byte("i"), }, }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1776, - EndPos: 1778, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1776, + EndPos: 1778, + }, }, - Value: "10", + Value: []byte("10"), }, }, }, - Loop: []node.Node{ - &expr.PostInc{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1780, - EndPos: 1784, - }, - Variable: &expr.Variable{ + Loop: []ast.Vertex{ + &ast.ExprPostInc{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1780, - EndPos: 1782, + EndPos: 1784, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1780, EndPos: 1782, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1780, + EndPos: 1782, + }, + }, + Value: []byte("i"), }, }, }, - &expr.PostInc{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1786, - EndPos: 1790, - }, - Variable: &expr.Variable{ + &ast.ExprPostInc{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1786, - EndPos: 1788, + EndPos: 1790, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 77, EndLine: 77, StartPos: 1786, EndPos: 1788, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1786, + EndPos: 1788, + }, + }, + Value: []byte("i"), }, }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1792, - EndPos: 1794, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 77, + EndLine: 77, + StartPos: 1792, + EndPos: 1794, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.AltFor{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1797, - EndPos: 1827, + &ast.StmtAltFor{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 78, + EndLine: 78, + StartPos: 1797, + EndPos: 1827, + }, }, - Cond: []node.Node{ - &binary.Smaller{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1803, - EndPos: 1810, - }, - Left: &expr.Variable{ + Cond: []ast.Vertex{ + &ast.ExprBinarySmaller{ + Node: ast.Node{ Position: &position.Position{ StartLine: 78, EndLine: 78, StartPos: 1803, - EndPos: 1805, + EndPos: 1810, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 78, EndLine: 78, StartPos: 1803, EndPos: 1805, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 78, + EndLine: 78, + StartPos: 1803, + EndPos: 1805, + }, + }, + Value: []byte("i"), }, }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1808, - EndPos: 1810, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 78, + EndLine: 78, + StartPos: 1808, + EndPos: 1810, + }, }, - Value: "10", + Value: []byte("10"), }, }, }, - Loop: []node.Node{ - &expr.PostInc{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1812, - EndPos: 1816, - }, - Variable: &expr.Variable{ + Loop: []ast.Vertex{ + &ast.ExprPostInc{ + Node: ast.Node{ Position: &position.Position{ StartLine: 78, EndLine: 78, StartPos: 1812, - EndPos: 1814, + EndPos: 1816, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 78, EndLine: 78, StartPos: 1812, EndPos: 1814, }, - Value: "i", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 78, + EndLine: 78, + StartPos: 1812, + EndPos: 1814, + }, + }, + Value: []byte("i"), }, }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1830, - EndPos: 1851, - }, - Expr: &expr.Variable{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 79, EndLine: 79, - StartPos: 1839, - EndPos: 1841, + StartPos: 1830, + EndPos: 1851, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 79, EndLine: 79, StartPos: 1839, EndPos: 1841, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 79, + EndLine: 79, + StartPos: 1839, + EndPos: 1841, + }, + }, + Value: []byte("a"), }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1845, - EndPos: 1847, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 79, EndLine: 79, StartPos: 1845, EndPos: 1847, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 79, + EndLine: 79, + StartPos: 1845, + EndPos: 1847, + }, + }, + Value: []byte("v"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1849, - EndPos: 1851, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 79, + EndLine: 79, + StartPos: 1849, + EndPos: 1851, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 80, - EndLine: 80, - StartPos: 1854, - EndPos: 1875, - }, - Expr: &expr.ShortArray{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 80, EndLine: 80, - StartPos: 1863, - EndPos: 1865, + StartPos: 1854, + EndPos: 1875, }, - Items: []node.Node{}, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 80, - EndLine: 80, - StartPos: 1869, - EndPos: 1871, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 80, + EndLine: 80, + StartPos: 1863, + EndPos: 1865, + }, }, - VarName: &node.Identifier{ + Items: []ast.Vertex{}, + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 80, EndLine: 80, StartPos: 1869, EndPos: 1871, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 80, + EndLine: 80, + StartPos: 1869, + EndPos: 1871, + }, + }, + Value: []byte("v"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 80, - EndLine: 80, - StartPos: 1873, - EndPos: 1875, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 80, + EndLine: 80, + StartPos: 1873, + EndPos: 1875, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.AltForeach{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1878, - EndPos: 1910, - }, - Expr: &expr.Variable{ + &ast.StmtAltForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 81, EndLine: 81, - StartPos: 1887, - EndPos: 1889, + StartPos: 1878, + EndPos: 1910, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 81, EndLine: 81, StartPos: 1887, EndPos: 1889, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 81, + EndLine: 81, + StartPos: 1887, + EndPos: 1889, + }, + }, + Value: []byte("a"), }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1893, - EndPos: 1895, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 81, EndLine: 81, StartPos: 1893, EndPos: 1895, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 81, + EndLine: 81, + StartPos: 1893, + EndPos: 1895, + }, + }, + Value: []byte("v"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: -1, + EndLine: -1, + StartPos: -1, + EndPos: -1, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1913, - EndPos: 1940, - }, - Expr: &expr.Variable{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 82, EndLine: 82, - StartPos: 1922, - EndPos: 1924, + StartPos: 1913, + EndPos: 1940, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 82, EndLine: 82, StartPos: 1922, EndPos: 1924, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 82, + EndLine: 82, + StartPos: 1922, + EndPos: 1924, + }, + }, + Value: []byte("a"), }, }, - Key: &expr.Variable{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1928, - EndPos: 1930, - }, - VarName: &node.Identifier{ + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 82, EndLine: 82, StartPos: 1928, EndPos: 1930, }, - Value: "k", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 82, + EndLine: 82, + StartPos: 1928, + EndPos: 1930, + }, + }, + Value: []byte("k"), }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1934, - EndPos: 1936, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 82, EndLine: 82, StartPos: 1934, EndPos: 1936, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 82, + EndLine: 82, + StartPos: 1934, + EndPos: 1936, + }, + }, + Value: []byte("v"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1938, - EndPos: 1940, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 82, + EndLine: 82, + StartPos: 1938, + EndPos: 1940, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1943, - EndPos: 1970, - }, - Expr: &expr.ShortArray{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 83, EndLine: 83, - StartPos: 1952, - EndPos: 1954, + StartPos: 1943, + EndPos: 1970, }, - Items: []node.Node{}, }, - Key: &expr.Variable{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1958, - EndPos: 1960, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 83, + EndLine: 83, + StartPos: 1952, + EndPos: 1954, + }, }, - VarName: &node.Identifier{ + Items: []ast.Vertex{}, + }, + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 83, EndLine: 83, StartPos: 1958, EndPos: 1960, }, - Value: "k", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 83, + EndLine: 83, + StartPos: 1958, + EndPos: 1960, + }, + }, + Value: []byte("k"), }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1964, - EndPos: 1966, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 83, EndLine: 83, StartPos: 1964, EndPos: 1966, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 83, + EndLine: 83, + StartPos: 1964, + EndPos: 1966, + }, + }, + Value: []byte("v"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1968, - EndPos: 1970, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 83, + EndLine: 83, + StartPos: 1968, + EndPos: 1970, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1973, - EndPos: 2001, - }, - Expr: &expr.Variable{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 84, EndLine: 84, - StartPos: 1982, - EndPos: 1984, + StartPos: 1973, + EndPos: 2001, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 84, EndLine: 84, StartPos: 1982, EndPos: 1984, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 84, + EndLine: 84, + StartPos: 1982, + EndPos: 1984, + }, + }, + Value: []byte("a"), }, }, - Key: &expr.Variable{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1988, - EndPos: 1990, - }, - VarName: &node.Identifier{ + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 84, EndLine: 84, StartPos: 1988, EndPos: 1990, }, - Value: "k", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 84, + EndLine: 84, + StartPos: 1988, + EndPos: 1990, + }, + }, + Value: []byte("k"), }, }, - Variable: &expr.Reference{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1994, - EndPos: 1997, - }, - Variable: &expr.Variable{ + Var: &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 84, EndLine: 84, - StartPos: 1995, + StartPos: 1994, EndPos: 1997, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 84, EndLine: 84, StartPos: 1995, EndPos: 1997, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 84, + EndLine: 84, + StartPos: 1995, + EndPos: 1997, + }, + }, + Value: []byte("v"), }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1999, - EndPos: 2001, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 84, + EndLine: 84, + StartPos: 1999, + EndPos: 2001, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Foreach{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 2004, - EndPos: 2037, - }, - Expr: &expr.Variable{ + &ast.StmtForeach{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, - StartPos: 2013, - EndPos: 2015, + StartPos: 2004, + EndPos: 2037, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, StartPos: 2013, EndPos: 2015, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 85, + EndLine: 85, + StartPos: 2013, + EndPos: 2015, + }, + }, + Value: []byte("a"), }, }, - Key: &expr.Variable{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 2019, - EndPos: 2021, - }, - VarName: &node.Identifier{ + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, StartPos: 2019, EndPos: 2021, }, - Value: "k", }, - }, - Variable: &expr.List{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 2025, - EndPos: 2033, - }, - Items: []node.Node{ - &expr.ArrayItem{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, - StartPos: 2030, - EndPos: 2032, + StartPos: 2019, + EndPos: 2021, }, - Val: &expr.Variable{ + }, + Value: []byte("k"), + }, + }, + Var: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 85, + EndLine: 85, + StartPos: 2025, + EndPos: 2033, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, StartPos: 2030, EndPos: 2032, }, - VarName: &node.Identifier{ + }, + Val: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 85, EndLine: 85, StartPos: 2030, EndPos: 2032, }, - Value: "v", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 85, + EndLine: 85, + StartPos: 2030, + EndPos: 2032, + }, + }, + Value: []byte("v"), }, }, }, }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 2035, - EndPos: 2037, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 85, + EndLine: 85, + StartPos: 2035, + EndPos: 2037, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 2040, - EndPos: 2057, - }, - ReturnsRef: false, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 86, EndLine: 86, - StartPos: 2049, - EndPos: 2052, + StartPos: 2040, + EndPos: 2057, }, - Value: "foo", }, - Stmts: []node.Node{}, + ReturnsRef: false, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 86, + EndLine: 86, + StartPos: 2049, + EndPos: 2052, + }, + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 88, - EndLine: 92, - StartPos: 2061, - EndPos: 2132, - }, - ReturnsRef: false, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 88, - EndLine: 88, - StartPos: 2070, - EndPos: 2073, + EndLine: 92, + StartPos: 2061, + EndPos: 2132, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.Function{ + ReturnsRef: false, + FunctionName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 89, - EndLine: 89, - StartPos: 2081, - EndPos: 2098, + StartLine: 88, + EndLine: 88, + StartPos: 2070, + EndPos: 2073, }, - ReturnsRef: false, - PhpDocComment: "", - FunctionName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 89, EndLine: 89, - StartPos: 2090, - EndPos: 2093, + StartPos: 2081, + EndPos: 2098, }, - Value: "bar", }, - Stmts: []node.Node{}, + ReturnsRef: false, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 89, + EndLine: 89, + StartPos: 2090, + EndPos: 2093, + }, + }, + Value: []byte("bar"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 90, - EndLine: 90, - StartPos: 2102, - EndPos: 2114, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 90, EndLine: 90, - StartPos: 2108, - EndPos: 2111, + StartPos: 2102, + EndPos: 2114, }, - Value: "Baz", }, - Stmts: []node.Node{}, + ClassName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 90, + EndLine: 90, + StartPos: 2108, + EndPos: 2111, + }, + }, + Value: []byte("Baz"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Return{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 2118, - EndPos: 2128, - }, - Expr: &expr.Variable{ + &ast.StmtReturn{ + Node: ast.Node{ Position: &position.Position{ StartLine: 91, EndLine: 91, - StartPos: 2125, - EndPos: 2127, + StartPos: 2118, + EndPos: 2128, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 91, EndLine: 91, StartPos: 2125, EndPos: 2127, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 91, + EndLine: 91, + StartPos: 2125, + EndPos: 2127, + }, + }, + Value: []byte("a"), }, }, }, }, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 2138, - EndPos: 2183, - }, - ReturnsRef: false, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, - StartPos: 2147, - EndPos: 2150, + StartPos: 2138, + EndPos: 2183, }, - Value: "foo", }, - Params: []node.Node{ - &node.Parameter{ + ReturnsRef: false, + FunctionName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, - StartPos: 2151, - EndPos: 2159, + StartPos: 2147, + EndPos: 2150, }, - Variadic: false, - ByRef: false, - VariableType: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, StartPos: 2151, - EndPos: 2156, - }, - Value: "array", - }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 2157, EndPos: 2159, }, - VarName: &node.Identifier{ + }, + Variadic: false, + ByRef: false, + Type: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 94, + EndLine: 94, + StartPos: 2151, + EndPos: 2156, + }, + }, + Value: []byte("array"), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, StartPos: 2157, EndPos: 2159, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 94, + EndLine: 94, + StartPos: 2157, + EndPos: 2159, + }, + }, + Value: []byte("a"), }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 2161, - EndPos: 2172, - }, - ByRef: false, - Variadic: false, - VariableType: &node.Identifier{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, StartPos: 2161, - EndPos: 2169, - }, - Value: "callable", - }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 2170, EndPos: 2172, }, - VarName: &node.Identifier{ + }, + ByRef: false, + Variadic: false, + Type: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 94, + EndLine: 94, + StartPos: 2161, + EndPos: 2169, + }, + }, + Value: []byte("callable"), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 94, EndLine: 94, StartPos: 2170, EndPos: 2172, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 94, + EndLine: 94, + StartPos: 2170, + EndPos: 2172, + }, + }, + Value: []byte("b"), }, }, }, }, - Stmts: []node.Node{ - &stmt.Return{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 2175, - EndPos: 2182, + Stmts: []ast.Vertex{ + &ast.StmtReturn{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 94, + EndLine: 94, + StartPos: 2175, + EndPos: 2182, + }, }, }, }, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2186, - EndPos: 2213, - }, - ReturnsRef: true, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 95, EndLine: 95, - StartPos: 2196, - EndPos: 2199, + StartPos: 2186, + EndPos: 2213, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.Return{ + ReturnsRef: true, + FunctionName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 95, EndLine: 95, - StartPos: 2203, - EndPos: 2212, + StartPos: 2196, + EndPos: 2199, }, - Expr: &scalar.Lnumber{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtReturn{ + Node: ast.Node{ Position: &position.Position{ StartLine: 95, EndLine: 95, - StartPos: 2210, - EndPos: 2211, + StartPos: 2203, + EndPos: 2212, }, - Value: "1", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 95, + EndLine: 95, + StartPos: 2210, + EndPos: 2211, + }, + }, + Value: []byte("1"), }, }, }, }, - &stmt.Function{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2216, - EndPos: 2234, - }, - ReturnsRef: true, - PhpDocComment: "", - FunctionName: &node.Identifier{ + &ast.StmtFunction{ + Node: ast.Node{ Position: &position.Position{ StartLine: 96, EndLine: 96, - StartPos: 2226, - EndPos: 2229, + StartPos: 2216, + EndPos: 2234, }, - Value: "foo", }, - Stmts: []node.Node{}, - }, - &stmt.Global{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2237, - EndPos: 2266, - }, - Vars: []node.Node{ - &expr.Variable{ + ReturnsRef: true, + FunctionName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2244, - EndPos: 2246, + StartLine: 96, + EndLine: 96, + StartPos: 2226, + EndPos: 2229, }, - VarName: &node.Identifier{ + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{}, + }, + &ast.StmtGlobal{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2237, + EndPos: 2266, + }, + }, + Vars: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, StartPos: 2244, EndPos: 2246, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2244, + EndPos: 2246, + }, + }, + Value: []byte("a"), }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2248, - EndPos: 2250, - }, - VarName: &node.Identifier{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, StartPos: 2248, EndPos: 2250, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2248, + EndPos: 2250, + }, + }, + Value: []byte("b"), }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2252, - EndPos: 2255, - }, - VarName: &expr.Variable{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, - StartPos: 2253, + StartPos: 2252, EndPos: 2255, }, - VarName: &node.Identifier{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, StartPos: 2253, EndPos: 2255, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2253, + EndPos: 2255, + }, + }, + Value: []byte("c"), }, }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2257, - EndPos: 2265, - }, - VarName: &expr.FunctionCall{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, - StartPos: 2259, - EndPos: 2264, + StartPos: 2257, + EndPos: 2265, }, - Function: &name.Name{ + }, + VarName: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 97, EndLine: 97, StartPos: 2259, - EndPos: 2262, + EndPos: 2264, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2259, - EndPos: 2262, + }, + Function: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2259, + EndPos: 2262, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2259, + EndPos: 2262, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2262, - EndPos: 2264, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 97, + EndLine: 97, + StartPos: 2262, + EndPos: 2264, + }, }, }, }, }, }, }, - &stmt.Label{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2269, - EndPos: 2271, - }, - LabelName: &node.Identifier{ + &ast.StmtLabel{ + Node: ast.Node{ Position: &position.Position{ StartLine: 98, EndLine: 98, StartPos: 2269, - EndPos: 2270, + EndPos: 2271, }, - Value: "a", + }, + LabelName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 98, + EndLine: 98, + StartPos: 2269, + EndPos: 2270, + }, + }, + Value: []byte("a"), }, }, - &stmt.Goto{ - Position: &position.Position{ - StartLine: 99, - EndLine: 99, - StartPos: 2275, - EndPos: 2282, - }, - Label: &node.Identifier{ + &ast.StmtGoto{ + Node: ast.Node{ Position: &position.Position{ StartLine: 99, EndLine: 99, - StartPos: 2280, - EndPos: 2281, + StartPos: 2275, + EndPos: 2282, }, - Value: "a", + }, + Label: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 99, + EndLine: 99, + StartPos: 2280, + EndPos: 2281, + }, + }, + Value: []byte("a"), }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 100, - EndLine: 100, - StartPos: 2285, - EndPos: 2295, - }, - Cond: &expr.Variable{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 100, EndLine: 100, - StartPos: 2289, - EndPos: 2291, + StartPos: 2285, + EndPos: 2295, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 100, EndLine: 100, StartPos: 2289, EndPos: 2291, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 100, + EndLine: 100, + StartPos: 2289, + EndPos: 2291, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 100, - EndLine: 100, - StartPos: 2293, - EndPos: 2295, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 100, + EndLine: 100, + StartPos: 2293, + EndPos: 2295, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2298, - EndPos: 2323, - }, - Cond: &expr.Variable{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 101, EndLine: 101, - StartPos: 2302, - EndPos: 2304, + StartPos: 2298, + EndPos: 2323, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 101, EndLine: 101, StartPos: 2302, EndPos: 2304, }, - Value: "a", }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2306, - EndPos: 2308, - }, - Stmts: []node.Node{}, - }, - ElseIf: []node.Node{ - &stmt.ElseIf{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2309, - EndPos: 2323, - }, - Cond: &expr.Variable{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 101, EndLine: 101, - StartPos: 2317, - EndPos: 2319, + StartPos: 2302, + EndPos: 2304, }, - VarName: &node.Identifier{ + }, + Value: []byte("a"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 101, + EndLine: 101, + StartPos: 2306, + EndPos: 2308, + }, + }, + Stmts: []ast.Vertex{}, + }, + ElseIf: []ast.Vertex{ + &ast.StmtElseIf{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 101, + EndLine: 101, + StartPos: 2309, + EndPos: 2323, + }, + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 101, EndLine: 101, StartPos: 2317, EndPos: 2319, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 101, + EndLine: 101, + StartPos: 2317, + EndPos: 2319, + }, + }, + Value: []byte("b"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2321, - EndPos: 2323, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 101, + EndLine: 101, + StartPos: 2321, + EndPos: 2323, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2326, - EndPos: 2344, - }, - Cond: &expr.Variable{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 102, EndLine: 102, - StartPos: 2330, - EndPos: 2332, + StartPos: 2326, + EndPos: 2344, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 102, EndLine: 102, StartPos: 2330, EndPos: 2332, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 102, + EndLine: 102, + StartPos: 2330, + EndPos: 2332, + }, + }, + Value: []byte("a"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2334, - EndPos: 2336, - }, - Stmts: []node.Node{}, - }, - Else: &stmt.Else{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2337, - EndPos: 2344, - }, - Stmt: &stmt.StmtList{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 102, EndLine: 102, - StartPos: 2342, + StartPos: 2334, + EndPos: 2336, + }, + }, + Stmts: []ast.Vertex{}, + }, + Else: &ast.StmtElse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 102, + EndLine: 102, + StartPos: 2337, EndPos: 2344, }, - Stmts: []node.Node{}, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 102, + EndLine: 102, + StartPos: 2342, + EndPos: 2344, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2347, - EndPos: 2395, - }, - Cond: &expr.Variable{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, - StartPos: 2351, - EndPos: 2353, + StartPos: 2347, + EndPos: 2395, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, StartPos: 2351, EndPos: 2353, }, - Value: "a", }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2355, - EndPos: 2357, - }, - Stmts: []node.Node{}, - }, - ElseIf: []node.Node{ - &stmt.ElseIf{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2358, - EndPos: 2372, - }, - Cond: &expr.Variable{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, - StartPos: 2366, - EndPos: 2368, + StartPos: 2351, + EndPos: 2353, }, - VarName: &node.Identifier{ + }, + Value: []byte("a"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2355, + EndPos: 2357, + }, + }, + Stmts: []ast.Vertex{}, + }, + ElseIf: []ast.Vertex{ + &ast.StmtElseIf{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2358, + EndPos: 2372, + }, + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, StartPos: 2366, EndPos: 2368, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2366, + EndPos: 2368, + }, + }, + Value: []byte("b"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2370, - EndPos: 2372, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2370, + EndPos: 2372, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.ElseIf{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2373, - EndPos: 2387, - }, - Cond: &expr.Variable{ + &ast.StmtElseIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, - StartPos: 2381, - EndPos: 2383, + StartPos: 2373, + EndPos: 2387, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, StartPos: 2381, EndPos: 2383, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2381, + EndPos: 2383, + }, + }, + Value: []byte("c"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2385, - EndPos: 2387, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2385, + EndPos: 2387, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, - Else: &stmt.Else{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2388, - EndPos: 2395, - }, - Stmt: &stmt.StmtList{ + Else: &ast.StmtElse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 103, EndLine: 103, - StartPos: 2393, + StartPos: 2388, EndPos: 2395, }, - Stmts: []node.Node{}, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 103, + EndLine: 103, + StartPos: 2393, + EndPos: 2395, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2398, - EndPos: 2447, - }, - Cond: &expr.Variable{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, - StartPos: 2402, - EndPos: 2404, + StartPos: 2398, + EndPos: 2447, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, StartPos: 2402, EndPos: 2404, }, - Value: "a", }, - }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2406, - EndPos: 2408, - }, - Stmts: []node.Node{}, - }, - ElseIf: []node.Node{ - &stmt.ElseIf{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2409, - EndPos: 2423, - }, - Cond: &expr.Variable{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, - StartPos: 2417, - EndPos: 2419, + StartPos: 2402, + EndPos: 2404, }, - VarName: &node.Identifier{ + }, + Value: []byte("a"), + }, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2406, + EndPos: 2408, + }, + }, + Stmts: []ast.Vertex{}, + }, + ElseIf: []ast.Vertex{ + &ast.StmtElseIf{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2409, + EndPos: 2423, + }, + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, StartPos: 2417, EndPos: 2419, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2417, + EndPos: 2419, + }, + }, + Value: []byte("b"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2421, - EndPos: 2423, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2421, + EndPos: 2423, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, - Else: &stmt.Else{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2424, - EndPos: 2447, - }, - Stmt: &stmt.If{ + Else: &ast.StmtElse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, - StartPos: 2429, + StartPos: 2424, EndPos: 2447, }, - Cond: &expr.Variable{ + }, + Stmt: &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, - StartPos: 2433, - EndPos: 2435, + StartPos: 2429, + EndPos: 2447, }, - VarName: &node.Identifier{ + }, + Cond: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, StartPos: 2433, EndPos: 2435, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2433, + EndPos: 2435, + }, + }, + Value: []byte("c"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2437, - EndPos: 2439, - }, - Stmts: []node.Node{}, - }, - Else: &stmt.Else{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2440, - EndPos: 2447, - }, - Stmt: &stmt.StmtList{ + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 104, EndLine: 104, - StartPos: 2445, + StartPos: 2437, + EndPos: 2439, + }, + }, + Stmts: []ast.Vertex{}, + }, + Else: &ast.StmtElse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2440, EndPos: 2447, }, - Stmts: []node.Node{}, + }, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 104, + EndLine: 104, + StartPos: 2445, + EndPos: 2447, + }, + }, + Stmts: []ast.Vertex{}, }, }, }, }, }, - &stmt.Nop{ - Position: &position.Position{ - StartLine: 105, - EndLine: 105, - StartPos: 2450, - EndPos: 2452, + &ast.StmtNop{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 105, + EndLine: 105, + StartPos: 2450, + EndPos: 2452, + }, }, }, - &stmt.InlineHtml{ - Position: &position.Position{ - StartLine: 105, - EndLine: 105, - StartPos: 2452, - EndPos: 2465, + &ast.StmtInlineHtml{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 105, + EndLine: 105, + StartPos: 2452, + EndPos: 2465, + }, }, - Value: "

", + Value: []byte("
"), }, - &stmt.Interface{ - Position: &position.Position{ - StartLine: 106, - EndLine: 106, - StartPos: 2470, - EndPos: 2486, - }, - PhpDocComment: "", - InterfaceName: &node.Identifier{ + &ast.StmtInterface{ + Node: ast.Node{ Position: &position.Position{ StartLine: 106, EndLine: 106, - StartPos: 2480, - EndPos: 2483, + StartPos: 2470, + EndPos: 2486, }, - Value: "Foo", }, - Stmts: []node.Node{}, + InterfaceName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 106, + EndLine: 106, + StartPos: 2480, + EndPos: 2483, + }, + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Interface{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2489, - EndPos: 2517, - }, - PhpDocComment: "", - InterfaceName: &node.Identifier{ + &ast.StmtInterface{ + Node: ast.Node{ Position: &position.Position{ StartLine: 107, EndLine: 107, - StartPos: 2499, - EndPos: 2502, + StartPos: 2489, + EndPos: 2517, }, - Value: "Foo", }, - Extends: &stmt.InterfaceExtends{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2503, - EndPos: 2514, + InterfaceName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 107, + EndLine: 107, + StartPos: 2499, + EndPos: 2502, + }, }, - InterfaceNames: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2511, - EndPos: 2514, + Value: []byte("Foo"), + }, + Extends: &ast.StmtInterfaceExtends{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 107, + EndLine: 107, + StartPos: 2503, + EndPos: 2514, + }, + }, + InterfaceNames: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 107, + EndLine: 107, + StartPos: 2511, + EndPos: 2514, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2511, - EndPos: 2514, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 107, + EndLine: 107, + StartPos: 2511, + EndPos: 2514, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Interface{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2520, - EndPos: 2553, - }, - PhpDocComment: "", - InterfaceName: &node.Identifier{ + &ast.StmtInterface{ + Node: ast.Node{ Position: &position.Position{ StartLine: 108, EndLine: 108, - StartPos: 2530, - EndPos: 2533, + StartPos: 2520, + EndPos: 2553, }, - Value: "Foo", }, - Extends: &stmt.InterfaceExtends{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2534, - EndPos: 2550, + InterfaceName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2530, + EndPos: 2533, + }, }, - InterfaceNames: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2542, - EndPos: 2545, + Value: []byte("Foo"), + }, + Extends: &ast.StmtInterfaceExtends{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2534, + EndPos: 2550, + }, + }, + InterfaceNames: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2542, + EndPos: 2545, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2542, - EndPos: 2545, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2542, + EndPos: 2545, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, - &name.Name{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2547, - EndPos: 2550, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2547, + EndPos: 2550, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2547, - EndPos: 2550, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 108, + EndLine: 108, + StartPos: 2547, + EndPos: 2550, + }, }, - Value: "Baz", + Value: []byte("Baz"), }, }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Namespace{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2556, - EndPos: 2570, - }, - NamespaceName: &name.Name{ + &ast.StmtNamespace{ + Node: ast.Node{ Position: &position.Position{ StartLine: 109, EndLine: 109, - StartPos: 2566, - EndPos: 2569, + StartPos: 2556, + EndPos: 2570, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2566, - EndPos: 2569, + }, + NamespaceName: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 109, + EndLine: 109, + StartPos: 2566, + EndPos: 2569, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 109, + EndLine: 109, + StartPos: 2566, + EndPos: 2569, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, - &stmt.Namespace{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2573, - EndPos: 2593, - }, - NamespaceName: &name.Name{ + &ast.StmtNamespace{ + Node: ast.Node{ Position: &position.Position{ StartLine: 110, EndLine: 110, - StartPos: 2583, - EndPos: 2590, + StartPos: 2573, + EndPos: 2593, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2583, - EndPos: 2586, - }, - Value: "Foo", + }, + NamespaceName: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 110, + EndLine: 110, + StartPos: 2583, + EndPos: 2590, }, - &name.NamePart{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2587, - EndPos: 2590, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 110, + EndLine: 110, + StartPos: 2583, + EndPos: 2586, + }, }, - Value: "Bar", + Value: []byte("Foo"), + }, + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 110, + EndLine: 110, + StartPos: 2587, + EndPos: 2590, + }, + }, + Value: []byte("Bar"), }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Namespace{ - Position: &position.Position{ - StartLine: 111, - EndLine: 111, - StartPos: 2596, - EndPos: 2608, + &ast.StmtNamespace{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 111, + EndLine: 111, + StartPos: 2596, + EndPos: 2608, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 112, - EndLine: 112, - StartPos: 2611, - EndPos: 2630, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 112, EndLine: 112, - StartPos: 2617, - EndPos: 2620, + StartPos: 2611, + EndPos: 2630, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.PropertyList{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 112, EndLine: 112, - StartPos: 2622, - EndPos: 2629, + StartPos: 2617, + EndPos: 2620, }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 112, - EndLine: 112, - StartPos: 2622, - EndPos: 2625, - }, - Value: "var", + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtPropertyList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 112, + EndLine: 112, + StartPos: 2622, + EndPos: 2629, }, }, - Properties: []node.Node{ - &stmt.Property{ - Position: &position.Position{ - StartLine: 112, - EndLine: 112, - StartPos: 2626, - EndPos: 2628, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 112, + EndLine: 112, + StartPos: 2622, + EndPos: 2625, + }, }, - PhpDocComment: "", - Variable: &expr.Variable{ + Value: []byte("var"), + }, + }, + Properties: []ast.Vertex{ + &ast.StmtProperty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 112, EndLine: 112, StartPos: 2626, EndPos: 2628, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 112, EndLine: 112, StartPos: 2626, EndPos: 2628, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 112, + EndLine: 112, + StartPos: 2626, + EndPos: 2628, + }, + }, + Value: []byte("a"), }, }, }, @@ -5669,221 +6797,263 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2633, - EndPos: 2670, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, - StartPos: 2639, - EndPos: 2642, + StartPos: 2633, + EndPos: 2670, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.PropertyList{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, - StartPos: 2644, - EndPos: 2669, + StartPos: 2639, + EndPos: 2642, }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2644, - EndPos: 2650, - }, - Value: "public", - }, - &node.Identifier{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2651, - EndPos: 2657, - }, - Value: "static", + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtPropertyList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2644, + EndPos: 2669, }, }, - Properties: []node.Node{ - &stmt.Property{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2658, - EndPos: 2660, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2644, + EndPos: 2650, + }, }, - PhpDocComment: "", - Variable: &expr.Variable{ + Value: []byte("public"), + }, + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2651, + EndPos: 2657, + }, + }, + Value: []byte("static"), + }, + }, + Properties: []ast.Vertex{ + &ast.StmtProperty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, StartPos: 2658, EndPos: 2660, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, StartPos: 2658, EndPos: 2660, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2658, + EndPos: 2660, + }, + }, + Value: []byte("a"), }, }, }, - &stmt.Property{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2662, - EndPos: 2668, - }, - PhpDocComment: "", - Variable: &expr.Variable{ + &ast.StmtProperty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, StartPos: 2662, - EndPos: 2664, + EndPos: 2668, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 113, EndLine: 113, StartPos: 2662, EndPos: 2664, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2662, + EndPos: 2664, + }, + }, + Value: []byte("b"), }, }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2667, - EndPos: 2668, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 113, + EndLine: 113, + StartPos: 2667, + EndPos: 2668, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2673, - EndPos: 2710, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, - StartPos: 2679, - EndPos: 2682, + StartPos: 2673, + EndPos: 2710, }, - Value: "foo", }, - Stmts: []node.Node{ - &stmt.PropertyList{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, - StartPos: 2684, - EndPos: 2709, + StartPos: 2679, + EndPos: 2682, }, - Modifiers: []node.Node{ - &node.Identifier{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2684, - EndPos: 2690, - }, - Value: "public", - }, - &node.Identifier{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2691, - EndPos: 2697, - }, - Value: "static", + }, + Value: []byte("foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtPropertyList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2684, + EndPos: 2709, }, }, - Properties: []node.Node{ - &stmt.Property{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2698, - EndPos: 2704, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2684, + EndPos: 2690, + }, }, - PhpDocComment: "", - Variable: &expr.Variable{ + Value: []byte("public"), + }, + &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2691, + EndPos: 2697, + }, + }, + Value: []byte("static"), + }, + }, + Properties: []ast.Vertex{ + &ast.StmtProperty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, StartPos: 2698, - EndPos: 2700, + EndPos: 2704, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, StartPos: 2698, EndPos: 2700, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2698, + EndPos: 2700, + }, + }, + Value: []byte("a"), }, }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2703, - EndPos: 2704, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2703, + EndPos: 2704, + }, }, - Value: "1", + Value: []byte("1"), }, }, - &stmt.Property{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2706, - EndPos: 2708, - }, - PhpDocComment: "", - Variable: &expr.Variable{ + &ast.StmtProperty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, StartPos: 2706, EndPos: 2708, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 114, EndLine: 114, StartPos: 2706, EndPos: 2708, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 114, + EndLine: 114, + StartPos: 2706, + EndPos: 2708, + }, + }, + Value: []byte("b"), }, }, }, @@ -5891,353 +7061,433 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2713, - EndPos: 2731, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 115, + EndLine: 115, + StartPos: 2713, + EndPos: 2731, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2720, - EndPos: 2722, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 115, EndLine: 115, StartPos: 2720, EndPos: 2722, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 115, EndLine: 115, StartPos: 2720, EndPos: 2722, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 115, + EndLine: 115, + StartPos: 2720, + EndPos: 2722, + }, + }, + Value: []byte("a"), }, }, }, - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2724, - EndPos: 2730, - }, - Variable: &expr.Variable{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 115, EndLine: 115, StartPos: 2724, - EndPos: 2726, + EndPos: 2730, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 115, EndLine: 115, StartPos: 2724, EndPos: 2726, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 115, + EndLine: 115, + StartPos: 2724, + EndPos: 2726, + }, + }, + Value: []byte("b"), }, }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2729, - EndPos: 2730, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 115, + EndLine: 115, + StartPos: 2729, + EndPos: 2730, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2734, - EndPos: 2752, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 116, + EndLine: 116, + StartPos: 2734, + EndPos: 2752, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2741, - EndPos: 2747, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 116, EndLine: 116, StartPos: 2741, - EndPos: 2743, + EndPos: 2747, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 116, EndLine: 116, StartPos: 2741, EndPos: 2743, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 116, + EndLine: 116, + StartPos: 2741, + EndPos: 2743, + }, + }, + Value: []byte("a"), }, }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2746, - EndPos: 2747, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 116, + EndLine: 116, + StartPos: 2746, + EndPos: 2747, + }, }, - Value: "1", + Value: []byte("1"), }, }, - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2749, - EndPos: 2751, - }, - Variable: &expr.Variable{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 116, EndLine: 116, StartPos: 2749, EndPos: 2751, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 116, EndLine: 116, StartPos: 2749, EndPos: 2751, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 116, + EndLine: 116, + StartPos: 2749, + EndPos: 2751, + }, + }, + Value: []byte("b"), }, }, }, }, }, - &stmt.AltSwitch{ - Position: &position.Position{ - StartLine: 118, - EndLine: 122, - StartPos: 2756, - EndPos: 2815, - }, - Cond: &scalar.Lnumber{ + &ast.StmtAltSwitch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 118, - EndLine: 118, - StartPos: 2764, - EndPos: 2765, + EndLine: 122, + StartPos: 2756, + EndPos: 2815, }, - Value: "1", }, - CaseList: &stmt.CaseList{ - Position: &position.Position{ - StartLine: 119, - EndLine: -1, - StartPos: 2772, - EndPos: -1, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 118, + EndLine: 118, + StartPos: 2764, + EndPos: 2765, + }, }, - Cases: []node.Node{ - &stmt.Case{ - Position: &position.Position{ - StartLine: 119, - EndLine: -1, - StartPos: 2772, - EndPos: -1, - }, - Cond: &scalar.Lnumber{ + Value: []byte("1"), + }, + CaseList: &ast.StmtCaseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 119, + EndLine: -1, + StartPos: 2772, + EndPos: -1, + }, + }, + Cases: []ast.Vertex{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 119, - EndLine: 119, - StartPos: 2777, - EndPos: 2778, + EndLine: -1, + StartPos: 2772, + EndPos: -1, }, - Value: "1", }, - Stmts: []node.Node{}, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 119, + EndLine: 119, + StartPos: 2777, + EndPos: 2778, + }, + }, + Value: []byte("1"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Default{ - Position: &position.Position{ - StartLine: 120, - EndLine: -1, - StartPos: 2783, - EndPos: -1, + &ast.StmtDefault{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 120, + EndLine: -1, + StartPos: 2783, + EndPos: -1, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Case{ - Position: &position.Position{ - StartLine: 121, - EndLine: -1, - StartPos: 2795, - EndPos: -1, - }, - Cond: &scalar.Lnumber{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 121, - EndLine: 121, - StartPos: 2800, - EndPos: 2801, + EndLine: -1, + StartPos: 2795, + EndPos: -1, }, - Value: "2", }, - Stmts: []node.Node{}, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 121, + EndLine: 121, + StartPos: 2800, + EndPos: 2801, + }, + }, + Value: []byte("2"), + }, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.AltSwitch{ - Position: &position.Position{ - StartLine: 124, - EndLine: 127, - StartPos: 2819, - EndPos: 2867, - }, - Cond: &scalar.Lnumber{ + &ast.StmtAltSwitch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 124, - EndLine: 124, - StartPos: 2827, - EndPos: 2828, + EndLine: 127, + StartPos: 2819, + EndPos: 2867, }, - Value: "1", }, - CaseList: &stmt.CaseList{ - Position: &position.Position{ - StartLine: 125, - EndLine: -1, - StartPos: 2836, - EndPos: -1, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 124, + EndLine: 124, + StartPos: 2827, + EndPos: 2828, + }, }, - Cases: []node.Node{ - &stmt.Case{ - Position: &position.Position{ - StartLine: 125, - EndLine: -1, - StartPos: 2836, - EndPos: -1, - }, - Cond: &scalar.Lnumber{ + Value: []byte("1"), + }, + CaseList: &ast.StmtCaseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 125, + EndLine: -1, + StartPos: 2836, + EndPos: -1, + }, + }, + Cases: []ast.Vertex{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 125, - EndLine: 125, - StartPos: 2841, - EndPos: 2842, + EndLine: -1, + StartPos: 2836, + EndPos: -1, }, - Value: "1", }, - Stmts: []node.Node{}, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 125, + EndLine: 125, + StartPos: 2841, + EndPos: 2842, + }, + }, + Value: []byte("1"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Case{ - Position: &position.Position{ - StartLine: 126, - EndLine: -1, - StartPos: 2847, - EndPos: -1, - }, - Cond: &scalar.Lnumber{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 126, - EndLine: 126, - StartPos: 2852, - EndPos: 2853, + EndLine: -1, + StartPos: 2847, + EndPos: -1, }, - Value: "2", }, - Stmts: []node.Node{}, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 126, + EndLine: 126, + StartPos: 2852, + EndPos: 2853, + }, + }, + Value: []byte("2"), + }, + Stmts: []ast.Vertex{}, }, }, }, }, - &stmt.Switch{ - Position: &position.Position{ - StartLine: 129, - EndLine: 132, - StartPos: 2873, - EndPos: 2925, - }, - Cond: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 129, - EndLine: 129, - StartPos: 2881, - EndPos: 2882, - }, - Value: "1", - }, - CaseList: &stmt.CaseList{ + &ast.StmtSwitch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 129, EndLine: 132, - StartPos: 2884, + StartPos: 2873, EndPos: 2925, }, - Cases: []node.Node{ - &stmt.Case{ - Position: &position.Position{ - StartLine: 130, - EndLine: 130, - StartPos: 2889, - EndPos: 2903, - }, - Cond: &scalar.Lnumber{ + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 129, + EndLine: 129, + StartPos: 2881, + EndPos: 2882, + }, + }, + Value: []byte("1"), + }, + CaseList: &ast.StmtCaseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 129, + EndLine: 132, + StartPos: 2884, + EndPos: 2925, + }, + }, + Cases: []ast.Vertex{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 130, EndLine: 130, - StartPos: 2894, - EndPos: 2895, + StartPos: 2889, + EndPos: 2903, }, - Value: "1", }, - Stmts: []node.Node{ - &stmt.Break{ + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 130, EndLine: 130, - StartPos: 2897, - EndPos: 2903, + StartPos: 2894, + EndPos: 2895, + }, + }, + Value: []byte("1"), + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 130, + EndLine: 130, + StartPos: 2897, + EndPos: 2903, + }, }, }, }, }, - &stmt.Case{ - Position: &position.Position{ - StartLine: 131, - EndLine: 131, - StartPos: 2907, - EndPos: 2921, - }, - Cond: &scalar.Lnumber{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 131, EndLine: 131, - StartPos: 2912, - EndPos: 2913, + StartPos: 2907, + EndPos: 2921, }, - Value: "2", }, - Stmts: []node.Node{ - &stmt.Break{ + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 131, EndLine: 131, - StartPos: 2915, - EndPos: 2921, + StartPos: 2912, + EndPos: 2913, + }, + }, + Value: []byte("2"), + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 131, + EndLine: 131, + StartPos: 2915, + EndPos: 2921, + }, }, }, }, @@ -6245,80 +7495,98 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Switch{ - Position: &position.Position{ - StartLine: 134, - EndLine: 137, - StartPos: 2931, - EndPos: 2984, - }, - Cond: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 134, - EndLine: 134, - StartPos: 2939, - EndPos: 2940, - }, - Value: "1", - }, - CaseList: &stmt.CaseList{ + &ast.StmtSwitch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 134, EndLine: 137, - StartPos: 2942, + StartPos: 2931, EndPos: 2984, }, - Cases: []node.Node{ - &stmt.Case{ - Position: &position.Position{ - StartLine: 135, - EndLine: 135, - StartPos: 2948, - EndPos: 2962, - }, - Cond: &scalar.Lnumber{ + }, + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 134, + EndLine: 134, + StartPos: 2939, + EndPos: 2940, + }, + }, + Value: []byte("1"), + }, + CaseList: &ast.StmtCaseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 134, + EndLine: 137, + StartPos: 2942, + EndPos: 2984, + }, + }, + Cases: []ast.Vertex{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 135, EndLine: 135, - StartPos: 2953, - EndPos: 2954, + StartPos: 2948, + EndPos: 2962, }, - Value: "1", }, - Stmts: []node.Node{ - &stmt.Break{ + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 135, EndLine: 135, - StartPos: 2956, - EndPos: 2962, + StartPos: 2953, + EndPos: 2954, + }, + }, + Value: []byte("1"), + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 135, + EndLine: 135, + StartPos: 2956, + EndPos: 2962, + }, }, }, }, }, - &stmt.Case{ - Position: &position.Position{ - StartLine: 136, - EndLine: 136, - StartPos: 2966, - EndPos: 2980, - }, - Cond: &scalar.Lnumber{ + &ast.StmtCase{ + Node: ast.Node{ Position: &position.Position{ StartLine: 136, EndLine: 136, - StartPos: 2971, - EndPos: 2972, + StartPos: 2966, + EndPos: 2980, }, - Value: "2", }, - Stmts: []node.Node{ - &stmt.Break{ + Cond: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 136, EndLine: 136, - StartPos: 2974, - EndPos: 2980, + StartPos: 2971, + EndPos: 2972, + }, + }, + Value: []byte("2"), + }, + Stmts: []ast.Vertex{ + &ast.StmtBreak{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 136, + EndLine: 136, + StartPos: 2974, + EndPos: 2980, + }, }, }, }, @@ -6326,288 +7594,346 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Throw{ - Position: &position.Position{ - StartLine: 138, - EndLine: 138, - StartPos: 2987, - EndPos: 2996, - }, - Expr: &expr.Variable{ + &ast.StmtThrow{ + Node: ast.Node{ Position: &position.Position{ StartLine: 138, EndLine: 138, - StartPos: 2993, - EndPos: 2995, + StartPos: 2987, + EndPos: 2996, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 138, EndLine: 138, StartPos: 2993, EndPos: 2995, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 138, + EndLine: 138, + StartPos: 2993, + EndPos: 2995, + }, + }, + Value: []byte("e"), }, }, }, - &stmt.Trait{ - Position: &position.Position{ - StartLine: 139, - EndLine: 139, - StartPos: 2999, - EndPos: 3011, - }, - PhpDocComment: "", - TraitName: &node.Identifier{ + &ast.StmtTrait{ + Node: ast.Node{ Position: &position.Position{ StartLine: 139, EndLine: 139, - StartPos: 3005, - EndPos: 3008, + StartPos: 2999, + EndPos: 3011, }, - Value: "Foo", }, - Stmts: []node.Node{}, + TraitName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 139, + EndLine: 139, + StartPos: 3005, + EndPos: 3008, + }, + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{}, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 3014, - EndPos: 3036, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 140, EndLine: 140, - StartPos: 3020, - EndPos: 3023, + StartPos: 3014, + EndPos: 3036, }, - Value: "Foo", }, - Stmts: []node.Node{ - &stmt.TraitUse{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 140, EndLine: 140, - StartPos: 3026, - EndPos: 3034, + StartPos: 3020, + EndPos: 3023, }, - Traits: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 3030, - EndPos: 3033, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 3030, - EndPos: 3033, - }, - Value: "Bar", - }, - }, - }, - }, - TraitAdaptationList: &stmt.Nop{ + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtTraitUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 140, EndLine: 140, - StartPos: 3033, + StartPos: 3026, EndPos: 3034, }, }, + Traits: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 140, + EndLine: 140, + StartPos: 3030, + EndPos: 3033, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 140, + EndLine: 140, + StartPos: 3030, + EndPos: 3033, + }, + }, + Value: []byte("Bar"), + }, + }, + }, + }, + TraitAdaptationList: &ast.StmtNop{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 140, + EndLine: 140, + StartPos: 3033, + EndPos: 3034, + }, + }, + }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 141, - EndLine: 141, - StartPos: 3039, - EndPos: 3068, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 141, EndLine: 141, - StartPos: 3045, - EndPos: 3048, + StartPos: 3039, + EndPos: 3068, }, - Value: "Foo", }, - Stmts: []node.Node{ - &stmt.TraitUse{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 141, EndLine: 141, - StartPos: 3051, - EndPos: 3066, + StartPos: 3045, + EndPos: 3048, }, - Traits: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 141, - EndLine: 141, - StartPos: 3055, - EndPos: 3058, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 141, - EndLine: 141, - StartPos: 3055, - EndPos: 3058, - }, - Value: "Bar", - }, - }, - }, - &name.Name{ - Position: &position.Position{ - StartLine: 141, - EndLine: 141, - StartPos: 3060, - EndPos: 3063, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 141, - EndLine: 141, - StartPos: 3060, - EndPos: 3063, - }, - Value: "Baz", - }, - }, - }, - }, - TraitAdaptationList: &stmt.TraitAdaptationList{ + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtTraitUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 141, EndLine: 141, - StartPos: 3064, + StartPos: 3051, EndPos: 3066, }, }, + Traits: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 141, + EndLine: 141, + StartPos: 3055, + EndPos: 3058, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 141, + EndLine: 141, + StartPos: 3055, + EndPos: 3058, + }, + }, + Value: []byte("Bar"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 141, + EndLine: 141, + StartPos: 3060, + EndPos: 3063, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 141, + EndLine: 141, + StartPos: 3060, + EndPos: 3063, + }, + }, + Value: []byte("Baz"), + }, + }, + }, + }, + TraitAdaptationList: &ast.StmtTraitAdaptationList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 141, + EndLine: 141, + StartPos: 3064, + EndPos: 3066, + }, + }, + }, }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3071, - EndPos: 3116, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, - StartPos: 3077, - EndPos: 3080, + StartPos: 3071, + EndPos: 3116, }, - Value: "Foo", }, - Stmts: []node.Node{ - &stmt.TraitUse{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, - StartPos: 3083, - EndPos: 3114, + StartPos: 3077, + EndPos: 3080, }, - Traits: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3087, - EndPos: 3090, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3087, - EndPos: 3090, - }, - Value: "Bar", - }, - }, - }, - &name.Name{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3092, - EndPos: 3095, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3092, - EndPos: 3095, - }, - Value: "Baz", - }, - }, - }, - }, - TraitAdaptationList: &stmt.TraitAdaptationList{ + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtTraitUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, - StartPos: 3096, + StartPos: 3083, EndPos: 3114, }, - Adaptations: []node.Node{ - &stmt.TraitUseAlias{ + }, + Traits: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, - StartPos: 3098, - EndPos: 3111, + StartPos: 3087, + EndPos: 3090, }, - Ref: &stmt.TraitMethodRef{ + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3087, + EndPos: 3090, + }, + }, + Value: []byte("Bar"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3092, + EndPos: 3095, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3092, + EndPos: 3095, + }, + }, + Value: []byte("Baz"), + }, + }, + }, + }, + TraitAdaptationList: &ast.StmtTraitAdaptationList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3096, + EndPos: 3114, + }, + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, StartPos: 3098, - EndPos: 3101, + EndPos: 3111, }, - Method: &node.Identifier{ + }, + Ref: &ast.StmtTraitMethodRef{ + Node: ast.Node{ Position: &position.Position{ StartLine: 142, EndLine: 142, StartPos: 3098, EndPos: 3101, }, - Value: "one", + }, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3098, + EndPos: 3101, + }, + }, + Value: []byte("one"), }, }, - Modifier: &node.Identifier{ - Position: &position.Position{ - StartLine: 142, - EndLine: 142, - StartPos: 3105, - EndPos: 3111, + Modifier: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 142, + EndLine: 142, + StartPos: 3105, + EndPos: 3111, + }, }, - Value: "public", + Value: []byte("public"), }, }, }, @@ -6615,120 +7941,145 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3119, - EndPos: 3168, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, - StartPos: 3125, - EndPos: 3128, + StartPos: 3119, + EndPos: 3168, }, - Value: "Foo", }, - Stmts: []node.Node{ - &stmt.TraitUse{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, - StartPos: 3131, - EndPos: 3166, + StartPos: 3125, + EndPos: 3128, }, - Traits: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3135, - EndPos: 3138, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3135, - EndPos: 3138, - }, - Value: "Bar", - }, - }, - }, - &name.Name{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3140, - EndPos: 3143, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3140, - EndPos: 3143, - }, - Value: "Baz", - }, - }, - }, - }, - TraitAdaptationList: &stmt.TraitAdaptationList{ + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtTraitUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, - StartPos: 3144, + StartPos: 3131, EndPos: 3166, }, - Adaptations: []node.Node{ - &stmt.TraitUseAlias{ + }, + Traits: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, - StartPos: 3146, - EndPos: 3163, + StartPos: 3135, + EndPos: 3138, }, - Ref: &stmt.TraitMethodRef{ + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3135, + EndPos: 3138, + }, + }, + Value: []byte("Bar"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3140, + EndPos: 3143, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3140, + EndPos: 3143, + }, + }, + Value: []byte("Baz"), + }, + }, + }, + }, + TraitAdaptationList: &ast.StmtTraitAdaptationList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3144, + EndPos: 3166, + }, + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, StartPos: 3146, - EndPos: 3149, + EndPos: 3163, }, - Method: &node.Identifier{ + }, + Ref: &ast.StmtTraitMethodRef{ + Node: ast.Node{ Position: &position.Position{ StartLine: 143, EndLine: 143, StartPos: 3146, EndPos: 3149, }, - Value: "one", + }, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3146, + EndPos: 3149, + }, + }, + Value: []byte("one"), }, }, - Modifier: &node.Identifier{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3153, - EndPos: 3159, + Modifier: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3153, + EndPos: 3159, + }, }, - Value: "public", + Value: []byte("public"), }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 3160, - EndPos: 3163, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 143, + EndLine: 143, + StartPos: 3160, + EndPos: 3163, + }, }, - Value: "two", + Value: []byte("two"), }, }, }, @@ -6736,214 +8087,259 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Class{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3171, - EndPos: 3248, - }, - PhpDocComment: "", - ClassName: &node.Identifier{ + &ast.StmtClass{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, - StartPos: 3177, - EndPos: 3180, + StartPos: 3171, + EndPos: 3248, }, - Value: "Foo", }, - Stmts: []node.Node{ - &stmt.TraitUse{ + ClassName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, - StartPos: 3183, - EndPos: 3246, + StartPos: 3177, + EndPos: 3180, }, - Traits: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3187, - EndPos: 3190, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3187, - EndPos: 3190, - }, - Value: "Bar", - }, - }, - }, - &name.Name{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3192, - EndPos: 3195, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3192, - EndPos: 3195, - }, - Value: "Baz", - }, - }, - }, - }, - TraitAdaptationList: &stmt.TraitAdaptationList{ + }, + Value: []byte("Foo"), + }, + Stmts: []ast.Vertex{ + &ast.StmtTraitUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, - StartPos: 3196, + StartPos: 3183, EndPos: 3246, }, - Adaptations: []node.Node{ - &stmt.TraitUsePrecedence{ + }, + Traits: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, - StartPos: 3198, - EndPos: 3226, + StartPos: 3187, + EndPos: 3190, }, - Ref: &stmt.TraitMethodRef{ + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3187, + EndPos: 3190, + }, + }, + Value: []byte("Bar"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3192, + EndPos: 3195, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3192, + EndPos: 3195, + }, + }, + Value: []byte("Baz"), + }, + }, + }, + }, + TraitAdaptationList: &ast.StmtTraitAdaptationList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3196, + EndPos: 3246, + }, + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUsePrecedence{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, StartPos: 3198, - EndPos: 3206, + EndPos: 3226, }, - Trait: &name.Name{ + }, + Ref: &ast.StmtTraitMethodRef{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, StartPos: 3198, - EndPos: 3201, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3198, - EndPos: 3201, - }, - Value: "Bar", - }, - }, - }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3203, EndPos: 3206, }, - Value: "one", }, - }, - Insteadof: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3217, - EndPos: 3220, + Trait: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3198, + EndPos: 3201, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3217, - EndPos: 3220, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3198, + EndPos: 3201, + }, }, - Value: "Baz", + Value: []byte("Bar"), }, }, }, - &name.Name{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3222, - EndPos: 3226, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3203, + EndPos: 3206, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3222, - EndPos: 3226, + Value: []byte("one"), + }, + }, + Insteadof: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3217, + EndPos: 3220, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3217, + EndPos: 3220, + }, }, - Value: "Quux", + Value: []byte("Baz"), + }, + }, + }, + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3222, + EndPos: 3226, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3222, + EndPos: 3226, + }, + }, + Value: []byte("Quux"), }, }, }, }, }, - &stmt.TraitUseAlias{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3228, - EndPos: 3243, - }, - Ref: &stmt.TraitMethodRef{ + &ast.StmtTraitUseAlias{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, StartPos: 3228, - EndPos: 3236, + EndPos: 3243, }, - Trait: &name.Name{ + }, + Ref: &ast.StmtTraitMethodRef{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, StartPos: 3228, - EndPos: 3231, + EndPos: 3236, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3228, - EndPos: 3231, + }, + Trait: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3228, + EndPos: 3231, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3228, + EndPos: 3231, + }, }, - Value: "Baz", + Value: []byte("Baz"), }, }, }, - Method: &node.Identifier{ + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 144, + EndLine: 144, + StartPos: 3233, + EndPos: 3236, + }, + }, + Value: []byte("one"), + }, + }, + Alias: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 144, EndLine: 144, - StartPos: 3233, - EndPos: 3236, + StartPos: 3240, + EndPos: 3243, }, - Value: "one", }, - }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 144, - EndLine: 144, - StartPos: 3240, - EndPos: 3243, - }, - Value: "two", + Value: []byte("two"), }, }, }, @@ -6951,1311 +8347,1599 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Try{ - Position: &position.Position{ - StartLine: 146, - EndLine: -1, - StartPos: 3252, - EndPos: -1, + &ast.StmtTry{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 146, + EndLine: -1, + StartPos: 3252, + EndPos: -1, + }, }, - Stmts: []node.Node{}, - Catches: []node.Node{}, + Stmts: []ast.Vertex{}, + Catches: []ast.Vertex{}, }, - &stmt.Try{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 3261, - EndPos: 3291, + &ast.StmtTry{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 147, + EndLine: 147, + StartPos: 3261, + EndPos: 3291, + }, }, - Stmts: []node.Node{}, - Catches: []node.Node{ - &stmt.Catch{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 3268, - EndPos: 3291, + Stmts: []ast.Vertex{}, + Catches: []ast.Vertex{ + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 147, + EndLine: 147, + StartPos: 3268, + EndPos: 3291, + }, }, - Types: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 3275, - EndPos: 3284, + Types: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 147, + EndLine: 147, + StartPos: 3275, + EndPos: 3284, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 3275, - EndPos: 3284, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 147, + EndLine: 147, + StartPos: 3275, + EndPos: 3284, + }, }, - Value: "Exception", + Value: []byte("Exception"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 3285, - EndPos: 3287, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 147, EndLine: 147, StartPos: 3285, EndPos: 3287, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 147, + EndLine: 147, + StartPos: 3285, + EndPos: 3287, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.Try{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3294, - EndPos: 3355, + &ast.StmtTry{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3294, + EndPos: 3355, + }, }, - Stmts: []node.Node{}, - Catches: []node.Node{ - &stmt.Catch{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3301, - EndPos: 3324, + Stmts: []ast.Vertex{}, + Catches: []ast.Vertex{ + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3301, + EndPos: 3324, + }, }, - Types: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3308, - EndPos: 3317, + Types: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3308, + EndPos: 3317, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3308, - EndPos: 3317, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3308, + EndPos: 3317, + }, }, - Value: "Exception", + Value: []byte("Exception"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3318, - EndPos: 3320, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 148, EndLine: 148, StartPos: 3318, EndPos: 3320, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3318, + EndPos: 3320, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Catch{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3325, - EndPos: 3355, + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3325, + EndPos: 3355, + }, }, - Types: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3332, - EndPos: 3348, + Types: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3332, + EndPos: 3348, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3332, - EndPos: 3348, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3332, + EndPos: 3348, + }, }, - Value: "RuntimeException", + Value: []byte("RuntimeException"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 3349, - EndPos: 3351, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 148, EndLine: 148, StartPos: 3349, EndPos: 3351, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 148, + EndLine: 148, + StartPos: 3349, + EndPos: 3351, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.Try{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3358, - EndPos: 3462, + &ast.StmtTry{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3358, + EndPos: 3462, + }, }, - Stmts: []node.Node{}, - Catches: []node.Node{ - &stmt.Catch{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3365, - EndPos: 3388, + Stmts: []ast.Vertex{}, + Catches: []ast.Vertex{ + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3365, + EndPos: 3388, + }, }, - Types: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3372, - EndPos: 3381, + Types: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3372, + EndPos: 3381, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3372, - EndPos: 3381, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3372, + EndPos: 3381, + }, }, - Value: "Exception", + Value: []byte("Exception"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3382, - EndPos: 3384, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 149, EndLine: 149, StartPos: 3382, EndPos: 3384, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3382, + EndPos: 3384, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Catch{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3389, - EndPos: 3420, + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3389, + EndPos: 3420, + }, }, - Types: []node.Node{ - &name.FullyQualified{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3396, - EndPos: 3413, + Types: []ast.Vertex{ + &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3396, + EndPos: 3413, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3397, - EndPos: 3413, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3397, + EndPos: 3413, + }, }, - Value: "RuntimeException", + Value: []byte("RuntimeException"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3414, - EndPos: 3416, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 149, EndLine: 149, StartPos: 3414, EndPos: 3416, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3414, + EndPos: 3416, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, - &stmt.Catch{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3421, - EndPos: 3462, + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3421, + EndPos: 3462, + }, }, - Types: []node.Node{ - &name.Relative{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3428, - EndPos: 3455, + Types: []ast.Vertex{ + &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3428, + EndPos: 3455, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3438, - EndPos: 3455, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3438, + EndPos: 3455, + }, }, - Value: "AdditionException", + Value: []byte("AdditionException"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3456, - EndPos: 3458, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 149, EndLine: 149, StartPos: 3456, EndPos: 3458, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 149, + EndLine: 149, + StartPos: 3456, + EndPos: 3458, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, }, - &stmt.Try{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3465, - EndPos: 3506, + &ast.StmtTry{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3465, + EndPos: 3506, + }, }, - Stmts: []node.Node{}, - Catches: []node.Node{ - &stmt.Catch{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3472, - EndPos: 3495, + Stmts: []ast.Vertex{}, + Catches: []ast.Vertex{ + &ast.StmtCatch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3472, + EndPos: 3495, + }, }, - Types: []node.Node{ - &name.Name{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3479, - EndPos: 3488, + Types: []ast.Vertex{ + &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3479, + EndPos: 3488, + }, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3479, - EndPos: 3488, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3479, + EndPos: 3488, + }, }, - Value: "Exception", + Value: []byte("Exception"), }, }, }, }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3489, - EndPos: 3491, - }, - VarName: &node.Identifier{ + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 150, EndLine: 150, StartPos: 3489, EndPos: 3491, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3489, + EndPos: 3491, + }, + }, + Value: []byte("e"), }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - Finally: &stmt.Finally{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3496, - EndPos: 3506, + Finally: &ast.StmtFinally{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 150, + EndLine: 150, + StartPos: 3496, + EndPos: 3506, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Unset{ - Position: &position.Position{ - StartLine: 152, - EndLine: 152, - StartPos: 3510, - EndPos: 3524, + &ast.StmtUnset{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 152, + EndLine: 152, + StartPos: 3510, + EndPos: 3524, + }, }, - Vars: []node.Node{ - &expr.Variable{ - Position: &position.Position{ - StartLine: 152, - EndLine: 152, - StartPos: 3516, - EndPos: 3518, - }, - VarName: &node.Identifier{ + Vars: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 152, EndLine: 152, StartPos: 3516, EndPos: 3518, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 152, + EndLine: 152, + StartPos: 3516, + EndPos: 3518, + }, + }, + Value: []byte("a"), }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 152, - EndLine: 152, - StartPos: 3520, - EndPos: 3522, - }, - VarName: &node.Identifier{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 152, EndLine: 152, StartPos: 3520, EndPos: 3522, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 152, + EndLine: 152, + StartPos: 3520, + EndPos: 3522, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3528, - EndPos: 3536, + &ast.StmtUseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 154, + EndLine: 154, + StartPos: 3528, + EndPos: 3536, + }, }, - Uses: []node.Node{ - &stmt.Use{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3532, - EndPos: 3535, - }, - Use: &name.Name{ + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 154, EndLine: 154, StartPos: 3532, EndPos: 3535, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3532, - EndPos: 3535, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 154, + EndLine: 154, + StartPos: 3532, + EndPos: 3535, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 154, + EndLine: 154, + StartPos: 3532, + EndPos: 3535, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3539, - EndPos: 3548, + &ast.StmtUseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 155, + EndLine: 155, + StartPos: 3539, + EndPos: 3548, + }, }, - Uses: []node.Node{ - &stmt.Use{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3544, - EndPos: 3547, - }, - Use: &name.Name{ + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 155, EndLine: 155, StartPos: 3544, EndPos: 3547, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3544, - EndPos: 3547, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 155, + EndLine: 155, + StartPos: 3544, + EndPos: 3547, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 155, + EndLine: 155, + StartPos: 3544, + EndPos: 3547, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3551, - EndPos: 3567, + &ast.StmtUseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 156, + EndLine: 156, + StartPos: 3551, + EndPos: 3567, + }, }, - Uses: []node.Node{ - &stmt.Use{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3556, - EndPos: 3566, - }, - Use: &name.Name{ + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 156, EndLine: 156, StartPos: 3556, - EndPos: 3559, + EndPos: 3566, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3556, - EndPos: 3559, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 156, + EndLine: 156, + StartPos: 3556, + EndPos: 3559, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 156, + EndLine: 156, + StartPos: 3556, + EndPos: 3559, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3563, - EndPos: 3566, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 156, + EndLine: 156, + StartPos: 3563, + EndPos: 3566, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3570, - EndPos: 3583, + &ast.StmtUseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 157, + EndLine: 157, + StartPos: 3570, + EndPos: 3583, + }, }, - Uses: []node.Node{ - &stmt.Use{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3574, - EndPos: 3577, - }, - Use: &name.Name{ + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 157, EndLine: 157, StartPos: 3574, EndPos: 3577, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3574, - EndPos: 3577, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 157, + EndLine: 157, + StartPos: 3574, + EndPos: 3577, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 157, + EndLine: 157, + StartPos: 3574, + EndPos: 3577, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3579, - EndPos: 3582, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 157, EndLine: 157, StartPos: 3579, EndPos: 3582, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3579, - EndPos: 3582, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 157, + EndLine: 157, + StartPos: 3579, + EndPos: 3582, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 157, + EndLine: 157, + StartPos: 3579, + EndPos: 3582, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3586, - EndPos: 3606, + &ast.StmtUseList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3586, + EndPos: 3606, + }, }, - Uses: []node.Node{ - &stmt.Use{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3590, - EndPos: 3593, - }, - Use: &name.Name{ + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 158, EndLine: 158, StartPos: 3590, EndPos: 3593, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3590, - EndPos: 3593, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3590, + EndPos: 3593, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3590, + EndPos: 3593, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3595, - EndPos: 3605, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 158, EndLine: 158, StartPos: 3595, - EndPos: 3598, + EndPos: 3605, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3595, - EndPos: 3598, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3595, + EndPos: 3598, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3595, + EndPos: 3598, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 158, - EndLine: 158, - StartPos: 3602, - EndPos: 3605, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 158, + EndLine: 158, + StartPos: 3602, + EndPos: 3605, + }, }, - Value: "Baz", + Value: []byte("Baz"), }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3609, - EndPos: 3632, - }, - UseType: &node.Identifier{ + &ast.StmtUseList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 159, EndLine: 159, - StartPos: 3613, - EndPos: 3621, + StartPos: 3609, + EndPos: 3632, }, - Value: "function", }, - Uses: []node.Node{ - &stmt.Use{ + UseType: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 159, EndLine: 159, - StartPos: 3622, - EndPos: 3625, + StartPos: 3613, + EndPos: 3621, }, - Use: &name.Name{ + }, + Value: []byte("function"), + }, + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 159, EndLine: 159, StartPos: 3622, EndPos: 3625, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3622, - EndPos: 3625, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 159, + EndLine: 159, + StartPos: 3622, + EndPos: 3625, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 159, + EndLine: 159, + StartPos: 3622, + EndPos: 3625, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3628, - EndPos: 3631, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 159, EndLine: 159, StartPos: 3628, EndPos: 3631, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3628, - EndPos: 3631, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 159, + EndLine: 159, + StartPos: 3628, + EndPos: 3631, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 159, + EndLine: 159, + StartPos: 3628, + EndPos: 3631, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3635, - EndPos: 3672, - }, - UseType: &node.Identifier{ + &ast.StmtUseList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 160, EndLine: 160, - StartPos: 3639, - EndPos: 3647, + StartPos: 3635, + EndPos: 3672, }, - Value: "function", }, - Uses: []node.Node{ - &stmt.Use{ + UseType: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 160, EndLine: 160, - StartPos: 3648, - EndPos: 3658, + StartPos: 3639, + EndPos: 3647, }, - Use: &name.Name{ + }, + Value: []byte("function"), + }, + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 160, EndLine: 160, StartPos: 3648, - EndPos: 3651, + EndPos: 3658, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3648, - EndPos: 3651, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3648, + EndPos: 3651, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3648, + EndPos: 3651, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3655, - EndPos: 3658, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3655, + EndPos: 3658, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3661, - EndPos: 3671, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 160, EndLine: 160, StartPos: 3661, - EndPos: 3664, + EndPos: 3671, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3661, - EndPos: 3664, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3661, + EndPos: 3664, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3661, + EndPos: 3664, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 160, - EndLine: 160, - StartPos: 3668, - EndPos: 3671, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 160, + EndLine: 160, + StartPos: 3668, + EndPos: 3671, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3675, - EndPos: 3695, - }, - UseType: &node.Identifier{ + &ast.StmtUseList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 161, EndLine: 161, - StartPos: 3679, - EndPos: 3684, + StartPos: 3675, + EndPos: 3695, }, - Value: "const", }, - Uses: []node.Node{ - &stmt.Use{ + UseType: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 161, EndLine: 161, - StartPos: 3685, - EndPos: 3688, + StartPos: 3679, + EndPos: 3684, }, - Use: &name.Name{ + }, + Value: []byte("const"), + }, + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 161, EndLine: 161, StartPos: 3685, EndPos: 3688, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3685, - EndPos: 3688, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 161, + EndLine: 161, + StartPos: 3685, + EndPos: 3688, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 161, + EndLine: 161, + StartPos: 3685, + EndPos: 3688, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3691, - EndPos: 3694, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 161, EndLine: 161, StartPos: 3691, EndPos: 3694, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3691, - EndPos: 3694, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 161, + EndLine: 161, + StartPos: 3691, + EndPos: 3694, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 161, + EndLine: 161, + StartPos: 3691, + EndPos: 3694, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, }, }, }, - &stmt.UseList{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3698, - EndPos: 3732, - }, - UseType: &node.Identifier{ + &ast.StmtUseList{ + Node: ast.Node{ Position: &position.Position{ StartLine: 162, EndLine: 162, - StartPos: 3702, - EndPos: 3707, + StartPos: 3698, + EndPos: 3732, }, - Value: "const", }, - Uses: []node.Node{ - &stmt.Use{ + UseType: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 162, EndLine: 162, - StartPos: 3708, - EndPos: 3718, + StartPos: 3702, + EndPos: 3707, }, - Use: &name.Name{ + }, + Value: []byte("const"), + }, + Uses: []ast.Vertex{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 162, EndLine: 162, StartPos: 3708, - EndPos: 3711, + EndPos: 3718, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3708, - EndPos: 3711, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3708, + EndPos: 3711, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3708, + EndPos: 3711, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3715, - EndPos: 3718, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3715, + EndPos: 3718, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, - &stmt.Use{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3721, - EndPos: 3731, - }, - Use: &name.Name{ + &ast.StmtUse{ + Node: ast.Node{ Position: &position.Position{ StartLine: 162, EndLine: 162, StartPos: 3721, - EndPos: 3724, + EndPos: 3731, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3721, - EndPos: 3724, + }, + Use: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3721, + EndPos: 3724, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3721, + EndPos: 3724, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, - Alias: &node.Identifier{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3728, - EndPos: 3731, + Alias: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 162, + EndLine: 162, + StartPos: 3728, + EndPos: 3731, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3736, - EndPos: 3742, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 164, EndLine: 164, StartPos: 3736, - EndPos: 3741, + EndPos: 3742, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 164, EndLine: 164, StartPos: 3736, - EndPos: 3738, + EndPos: 3741, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 164, EndLine: 164, StartPos: 3736, EndPos: 3738, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 164, + EndLine: 164, + StartPos: 3736, + EndPos: 3738, + }, + }, + Value: []byte("a"), }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3739, - EndPos: 3740, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 164, + EndLine: 164, + StartPos: 3739, + EndPos: 3740, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3745, - EndPos: 3754, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 165, EndLine: 165, StartPos: 3745, - EndPos: 3753, + EndPos: 3754, }, - Variable: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 165, EndLine: 165, StartPos: 3745, - EndPos: 3750, + EndPos: 3753, }, - Variable: &expr.Variable{ + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 165, EndLine: 165, StartPos: 3745, - EndPos: 3747, + EndPos: 3750, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 165, EndLine: 165, StartPos: 3745, EndPos: 3747, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 165, + EndLine: 165, + StartPos: 3745, + EndPos: 3747, + }, + }, + Value: []byte("a"), }, }, - Dim: &scalar.Lnumber{ + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 165, + EndLine: 165, + StartPos: 3748, + EndPos: 3749, + }, + }, + Value: []byte("1"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 165, EndLine: 165, - StartPos: 3748, - EndPos: 3749, + StartPos: 3751, + EndPos: 3752, }, - Value: "1", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3751, - EndPos: 3752, - }, - Value: "2", + Value: []byte("2"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3757, - EndPos: 3765, - }, - Expr: &expr.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 166, EndLine: 166, StartPos: 3757, - EndPos: 3764, + EndPos: 3765, }, - Items: []node.Node{}, + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 166, + EndLine: 166, + StartPos: 3757, + EndPos: 3764, + }, + }, + Items: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3768, - EndPos: 3777, - }, - Expr: &expr.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 167, EndLine: 167, StartPos: 3768, - EndPos: 3776, + EndPos: 3777, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3774, - EndPos: 3775, - }, - Val: &scalar.Lnumber{ + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 167, + EndLine: 167, + StartPos: 3768, + EndPos: 3776, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 167, EndLine: 167, StartPos: 3774, EndPos: 3775, }, - Value: "1", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 167, + EndLine: 167, + StartPos: 3774, + EndPos: 3775, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3780, - EndPos: 3798, - }, - Expr: &expr.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 168, EndLine: 168, StartPos: 3780, - EndPos: 3797, + EndPos: 3798, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3786, - EndPos: 3790, - }, - Key: &scalar.Lnumber{ + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 168, + EndLine: 168, + StartPos: 3780, + EndPos: 3797, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 168, EndLine: 168, StartPos: 3786, - EndPos: 3787, - }, - Value: "1", - }, - Val: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3789, EndPos: 3790, }, - Value: "1", + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 168, + EndLine: 168, + StartPos: 3786, + EndPos: 3787, + }, + }, + Value: []byte("1"), + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 168, + EndLine: 168, + StartPos: 3789, + EndPos: 3790, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3792, - EndPos: 3795, - }, - Val: &expr.Reference{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 168, EndLine: 168, StartPos: 3792, EndPos: 3795, }, - Variable: &expr.Variable{ + }, + Val: &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 168, EndLine: 168, - StartPos: 3793, + StartPos: 3792, EndPos: 3795, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 168, EndLine: 168, StartPos: 3793, EndPos: 3795, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 168, + EndLine: 168, + StartPos: 3793, + EndPos: 3795, + }, + }, + Value: []byte("b"), }, }, }, }, - &expr.ArrayItem{}, + &ast.ExprArrayItem{}, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3801, - EndPos: 3816, - }, - Expr: &expr.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 169, EndLine: 169, StartPos: 3801, - EndPos: 3815, + EndPos: 3816, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3807, - EndPos: 3814, - }, - Key: &scalar.Lnumber{ + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 169, + EndLine: 169, + StartPos: 3801, + EndPos: 3815, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 169, EndLine: 169, StartPos: 3807, - EndPos: 3808, - }, - Value: "3", - }, - Val: &expr.Reference{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3811, EndPos: 3814, }, - Variable: &expr.Variable{ + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 169, EndLine: 169, - StartPos: 3812, + StartPos: 3807, + EndPos: 3808, + }, + }, + Value: []byte("3"), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 169, + EndLine: 169, + StartPos: 3811, EndPos: 3814, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 169, EndLine: 169, StartPos: 3812, EndPos: 3814, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 169, + EndLine: 169, + StartPos: 3812, + EndPos: 3814, + }, + }, + Value: []byte("b"), }, }, }, @@ -8263,135 +9947,167 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3819, - EndPos: 3848, - }, - Expr: &expr.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3819, - EndPos: 3847, + EndPos: 3848, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3825, - EndPos: 3828, - }, - Val: &expr.Reference{ + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3819, + EndPos: 3847, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3825, EndPos: 3828, }, - Variable: &expr.Variable{ + }, + Val: &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, - StartPos: 3826, + StartPos: 3825, EndPos: 3828, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3826, EndPos: 3828, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3826, + EndPos: 3828, + }, + }, + Value: []byte("b"), }, }, }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3830, - EndPos: 3834, - }, - Key: &scalar.Lnumber{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3830, - EndPos: 3831, - }, - Value: "1", - }, - Val: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3833, EndPos: 3834, }, - Value: "1", + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3830, + EndPos: 3831, + }, + }, + Value: []byte("1"), + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3833, + EndPos: 3834, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3836, - EndPos: 3837, - }, - Val: &scalar.Lnumber{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3836, EndPos: 3837, }, - Value: "1", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3836, + EndPos: 3837, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3839, - EndPos: 3846, - }, - Key: &scalar.Lnumber{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3839, - EndPos: 3840, - }, - Value: "3", - }, - Val: &expr.Reference{ - Position: &position.Position{ - StartLine: 170, - EndLine: 170, - StartPos: 3843, EndPos: 3846, }, - Variable: &expr.Variable{ + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, - StartPos: 3844, + StartPos: 3839, + EndPos: 3840, + }, + }, + Value: []byte("3"), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3843, EndPos: 3846, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 170, EndLine: 170, StartPos: 3844, EndPos: 3846, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 170, + EndLine: 170, + StartPos: 3844, + EndPos: 3846, + }, + }, + Value: []byte("b"), }, }, }, @@ -8399,935 +10115,1145 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3851, - EndPos: 3855, - }, - Expr: &expr.BitwiseNot{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 171, EndLine: 171, StartPos: 3851, - EndPos: 3854, + EndPos: 3855, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprBitwiseNot{ + Node: ast.Node{ Position: &position.Position{ StartLine: 171, EndLine: 171, - StartPos: 3852, + StartPos: 3851, EndPos: 3854, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 171, EndLine: 171, StartPos: 3852, EndPos: 3854, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 171, + EndLine: 171, + StartPos: 3852, + EndPos: 3854, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3858, - EndPos: 3862, - }, - Expr: &expr.BooleanNot{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 172, EndLine: 172, StartPos: 3858, - EndPos: 3861, + EndPos: 3862, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprBooleanNot{ + Node: ast.Node{ Position: &position.Position{ StartLine: 172, EndLine: 172, - StartPos: 3859, + StartPos: 3858, EndPos: 3861, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 172, EndLine: 172, StartPos: 3859, EndPos: 3861, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 172, + EndLine: 172, + StartPos: 3859, + EndPos: 3861, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3866, - EndPos: 3875, - }, - Expr: &expr.ClassConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 174, EndLine: 174, StartPos: 3866, - EndPos: 3874, + EndPos: 3875, }, - Class: &name.Name{ + }, + Expr: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 174, EndLine: 174, StartPos: 3866, - EndPos: 3869, + EndPos: 3874, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3866, - EndPos: 3869, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 174, + EndLine: 174, + StartPos: 3866, + EndPos: 3869, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 174, + EndLine: 174, + StartPos: 3866, + EndPos: 3869, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3871, - EndPos: 3874, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 174, + EndLine: 174, + StartPos: 3871, + EndPos: 3874, + }, }, - Value: "Bar", + Value: []byte("Bar"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3878, - EndPos: 3888, - }, - Expr: &expr.Clone{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 175, EndLine: 175, StartPos: 3878, - EndPos: 3886, + EndPos: 3888, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprClone{ + Node: ast.Node{ Position: &position.Position{ StartLine: 175, EndLine: 175, - StartPos: 3884, + StartPos: 3878, EndPos: 3886, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 175, EndLine: 175, StartPos: 3884, EndPos: 3886, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 175, + EndLine: 175, + StartPos: 3884, + EndPos: 3886, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 176, - EndLine: 176, - StartPos: 3891, - EndPos: 3900, - }, - Expr: &expr.Clone{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 176, EndLine: 176, StartPos: 3891, - EndPos: 3899, + EndPos: 3900, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprClone{ + Node: ast.Node{ Position: &position.Position{ StartLine: 176, EndLine: 176, - StartPos: 3897, + StartPos: 3891, EndPos: 3899, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 176, EndLine: 176, StartPos: 3897, EndPos: 3899, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 176, + EndLine: 176, + StartPos: 3897, + EndPos: 3899, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3903, - EndPos: 3916, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 177, EndLine: 177, StartPos: 3903, - EndPos: 3915, + EndPos: 3916, }, - Static: false, - PhpDocComment: "", - ReturnsRef: false, - Stmts: []node.Node{}, + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 177, + EndLine: 177, + StartPos: 3903, + EndPos: 3915, + }, + }, + Static: false, + ReturnsRef: false, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3919, - EndPos: 3953, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3919, - EndPos: 3952, + EndPos: 3953, }, - ReturnsRef: false, - Static: false, - PhpDocComment: "", - Params: []node.Node{ - &node.Parameter{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3928, - EndPos: 3930, - }, - ByRef: false, - Variadic: false, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3919, + EndPos: 3952, + }, + }, + ReturnsRef: false, + Static: false, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3928, EndPos: 3930, }, - VarName: &node.Identifier{ + }, + ByRef: false, + Variadic: false, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3928, EndPos: 3930, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3928, + EndPos: 3930, + }, + }, + Value: []byte("a"), }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3932, - EndPos: 3934, - }, - Variadic: false, - ByRef: false, - Variable: &expr.Variable{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3932, EndPos: 3934, }, - VarName: &node.Identifier{ + }, + Variadic: false, + ByRef: false, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3932, EndPos: 3934, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3932, + EndPos: 3934, + }, + }, + Value: []byte("b"), }, }, }, }, - ClosureUse: &expr.ClosureUse{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3936, - EndPos: 3949, + ClosureUse: &ast.ExprClosureUse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3936, + EndPos: 3949, + }, }, - Uses: []node.Node{ - &expr.Variable{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3941, - EndPos: 3943, - }, - VarName: &node.Identifier{ + Uses: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3941, EndPos: 3943, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3941, + EndPos: 3943, + }, + }, + Value: []byte("c"), }, }, - &expr.Reference{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3945, - EndPos: 3948, - }, - Variable: &expr.Variable{ + &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, - StartPos: 3946, + StartPos: 3945, EndPos: 3948, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 178, EndLine: 178, StartPos: 3946, EndPos: 3948, }, - Value: "d", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 178, + EndLine: 178, + StartPos: 3946, + EndPos: 3948, + }, + }, + Value: []byte("d"), }, }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3956, - EndPos: 3990, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3956, - EndPos: 3989, + EndPos: 3990, }, - ReturnsRef: false, - Static: false, - PhpDocComment: "", - Params: []node.Node{ - &node.Parameter{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3965, - EndPos: 3967, - }, - ByRef: false, - Variadic: false, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3956, + EndPos: 3989, + }, + }, + ReturnsRef: false, + Static: false, + Params: []ast.Vertex{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3965, EndPos: 3967, }, - VarName: &node.Identifier{ + }, + ByRef: false, + Variadic: false, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3965, EndPos: 3967, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3965, + EndPos: 3967, + }, + }, + Value: []byte("a"), }, }, }, - &node.Parameter{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3969, - EndPos: 3971, - }, - ByRef: false, - Variadic: false, - Variable: &expr.Variable{ + &ast.Parameter{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3969, EndPos: 3971, }, - VarName: &node.Identifier{ + }, + ByRef: false, + Variadic: false, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3969, EndPos: 3971, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3969, + EndPos: 3971, + }, + }, + Value: []byte("b"), }, }, }, }, - ClosureUse: &expr.ClosureUse{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3973, - EndPos: 3986, + ClosureUse: &ast.ExprClosureUse{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3973, + EndPos: 3986, + }, }, - Uses: []node.Node{ - &expr.Reference{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3978, - EndPos: 3981, - }, - Variable: &expr.Variable{ + Uses: []ast.Vertex{ + &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, - StartPos: 3979, + StartPos: 3978, EndPos: 3981, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3979, EndPos: 3981, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3979, + EndPos: 3981, + }, + }, + Value: []byte("c"), }, }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3983, - EndPos: 3985, - }, - VarName: &node.Identifier{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 179, EndLine: 179, StartPos: 3983, EndPos: 3985, }, - Value: "d", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 179, + EndLine: 179, + StartPos: 3983, + EndPos: 3985, + }, + }, + Value: []byte("d"), }, }, }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 180, - EndLine: 180, - StartPos: 3993, - EndPos: 4007, - }, - Expr: &expr.Closure{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 180, EndLine: 180, StartPos: 3993, - EndPos: 4006, + EndPos: 4007, }, - ReturnsRef: false, - Static: false, - PhpDocComment: "", - Stmts: []node.Node{}, + }, + Expr: &ast.ExprClosure{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 180, + EndLine: 180, + StartPos: 3993, + EndPos: 4006, + }, + }, + ReturnsRef: false, + Static: false, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 4010, - EndPos: 4014, - }, - Expr: &expr.ConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 181, EndLine: 181, StartPos: 4010, - EndPos: 4013, + EndPos: 4014, }, - Constant: &name.Name{ + }, + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 181, EndLine: 181, StartPos: 4010, EndPos: 4013, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 4010, - EndPos: 4013, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 181, + EndLine: 181, + StartPos: 4010, + EndPos: 4013, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 181, + EndLine: 181, + StartPos: 4010, + EndPos: 4013, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 4017, - EndPos: 4031, - }, - Expr: &expr.ConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 182, EndLine: 182, StartPos: 4017, - EndPos: 4030, + EndPos: 4031, }, - Constant: &name.Relative{ + }, + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 182, EndLine: 182, StartPos: 4017, EndPos: 4030, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 4027, - EndPos: 4030, + }, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 182, + EndLine: 182, + StartPos: 4017, + EndPos: 4030, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 182, + EndLine: 182, + StartPos: 4027, + EndPos: 4030, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 4034, - EndPos: 4039, - }, - Expr: &expr.ConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 183, EndLine: 183, StartPos: 4034, - EndPos: 4038, + EndPos: 4039, }, - Constant: &name.FullyQualified{ + }, + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 183, EndLine: 183, StartPos: 4034, EndPos: 4038, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 4035, - EndPos: 4038, + }, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 183, + EndLine: 183, + StartPos: 4034, + EndPos: 4038, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 183, + EndLine: 183, + StartPos: 4035, + EndPos: 4038, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 4043, - EndPos: 4053, - }, - Expr: &expr.Empty{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 185, EndLine: 185, StartPos: 4043, - EndPos: 4052, + EndPos: 4053, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprEmpty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 185, EndLine: 185, - StartPos: 4049, - EndPos: 4051, + StartPos: 4043, + EndPos: 4052, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 185, EndLine: 185, StartPos: 4049, EndPos: 4051, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 185, + EndLine: 185, + StartPos: 4049, + EndPos: 4051, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 4056, - EndPos: 4067, - }, - Expr: &expr.Empty{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 186, EndLine: 186, StartPos: 4056, - EndPos: 4066, + EndPos: 4067, }, - Expr: &expr.ConstFetch{ + }, + Expr: &ast.ExprEmpty{ + Node: ast.Node{ Position: &position.Position{ StartLine: 186, EndLine: 186, - StartPos: 4062, - EndPos: 4065, + StartPos: 4056, + EndPos: 4066, }, - Constant: &name.Name{ + }, + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 186, EndLine: 186, StartPos: 4062, EndPos: 4065, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 4062, - EndPos: 4065, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 186, + EndLine: 186, + StartPos: 4062, + EndPos: 4065, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 186, + EndLine: 186, + StartPos: 4062, + EndPos: 4065, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 187, - EndLine: 187, - StartPos: 4070, - EndPos: 4074, - }, - Expr: &expr.ErrorSuppress{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 187, EndLine: 187, StartPos: 4070, - EndPos: 4073, + EndPos: 4074, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprErrorSuppress{ + Node: ast.Node{ Position: &position.Position{ StartLine: 187, EndLine: 187, - StartPos: 4071, + StartPos: 4070, EndPos: 4073, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 187, EndLine: 187, StartPos: 4071, EndPos: 4073, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 187, + EndLine: 187, + StartPos: 4071, + EndPos: 4073, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 188, - EndLine: 188, - StartPos: 4077, - EndPos: 4086, - }, - Expr: &expr.Eval{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 188, EndLine: 188, StartPos: 4077, - EndPos: 4085, + EndPos: 4086, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprEval{ + Node: ast.Node{ Position: &position.Position{ StartLine: 188, EndLine: 188, - StartPos: 4082, - EndPos: 4084, + StartPos: 4077, + EndPos: 4085, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 188, EndLine: 188, StartPos: 4082, EndPos: 4084, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 188, + EndLine: 188, + StartPos: 4082, + EndPos: 4084, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 189, - EndLine: 189, - StartPos: 4089, - EndPos: 4094, - }, - Expr: &expr.Exit{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 189, EndLine: 189, StartPos: 4089, - EndPos: 4093, + EndPos: 4094, + }, + }, + Expr: &ast.ExprExit{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 189, + EndLine: 189, + StartPos: 4089, + EndPos: 4093, + }, }, Die: false, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 4097, - EndPos: 4106, - }, - Expr: &expr.Exit{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 190, EndLine: 190, StartPos: 4097, - EndPos: 4105, + EndPos: 4106, }, - Die: false, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprExit{ + Node: ast.Node{ Position: &position.Position{ StartLine: 190, EndLine: 190, - StartPos: 4102, - EndPos: 4104, + StartPos: 4097, + EndPos: 4105, }, - VarName: &node.Identifier{ + }, + Die: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 190, EndLine: 190, StartPos: 4102, EndPos: 4104, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 190, + EndLine: 190, + StartPos: 4102, + EndPos: 4104, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 191, - EndLine: 191, - StartPos: 4109, - EndPos: 4115, - }, - Expr: &expr.Exit{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 191, EndLine: 191, StartPos: 4109, - EndPos: 4114, + EndPos: 4115, + }, + }, + Expr: &ast.ExprExit{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 191, + EndLine: 191, + StartPos: 4109, + EndPos: 4114, + }, }, Die: true, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 192, - EndLine: 192, - StartPos: 4118, - EndPos: 4126, - }, - Expr: &expr.Exit{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 192, EndLine: 192, StartPos: 4118, - EndPos: 4125, + EndPos: 4126, }, - Die: true, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprExit{ + Node: ast.Node{ Position: &position.Position{ StartLine: 192, EndLine: 192, - StartPos: 4122, - EndPos: 4124, + StartPos: 4118, + EndPos: 4125, }, - VarName: &node.Identifier{ + }, + Die: true, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 192, EndLine: 192, StartPos: 4122, EndPos: 4124, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 192, + EndLine: 192, + StartPos: 4122, + EndPos: 4124, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 4129, - EndPos: 4135, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 193, EndLine: 193, StartPos: 4129, - EndPos: 4134, + EndPos: 4135, }, - Function: &name.Name{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 193, EndLine: 193, StartPos: 4129, - EndPos: 4132, + EndPos: 4134, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 4129, - EndPos: 4132, + }, + Function: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 193, + EndLine: 193, + StartPos: 4129, + EndPos: 4132, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 193, + EndLine: 193, + StartPos: 4129, + EndPos: 4132, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 4132, - EndPos: 4134, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 193, + EndLine: 193, + StartPos: 4132, + EndPos: 4134, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 4138, - EndPos: 4157, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 194, EndLine: 194, StartPos: 4138, - EndPos: 4156, + EndPos: 4157, }, - Function: &name.Relative{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 194, EndLine: 194, StartPos: 4138, - EndPos: 4151, + EndPos: 4156, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 4148, - EndPos: 4151, + }, + Function: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 194, + EndLine: 194, + StartPos: 4138, + EndPos: 4151, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 194, + EndLine: 194, + StartPos: 4148, + EndPos: 4151, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 4151, - EndPos: 4156, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 194, + EndLine: 194, + StartPos: 4151, + EndPos: 4156, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 4153, - EndPos: 4155, - }, - Variadic: false, - IsReference: true, - Expr: &expr.Variable{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 194, EndLine: 194, StartPos: 4153, EndPos: 4155, }, - VarName: &node.Identifier{ + }, + Variadic: false, + IsReference: true, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 194, EndLine: 194, StartPos: 4153, EndPos: 4155, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 194, + EndLine: 194, + StartPos: 4153, + EndPos: 4155, + }, + }, + Value: []byte("a"), }, }, }, @@ -9335,140 +11261,172 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 195, - EndLine: 195, - StartPos: 4160, - EndPos: 4169, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 195, EndLine: 195, StartPos: 4160, - EndPos: 4168, + EndPos: 4169, }, - Function: &name.FullyQualified{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 195, EndLine: 195, StartPos: 4160, - EndPos: 4164, + EndPos: 4168, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 195, - EndLine: 195, - StartPos: 4161, - EndPos: 4164, + }, + Function: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 195, + EndLine: 195, + StartPos: 4160, + EndPos: 4164, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 195, + EndLine: 195, + StartPos: 4161, + EndPos: 4164, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 195, - EndLine: 195, - StartPos: 4164, - EndPos: 4168, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 195, + EndLine: 195, + StartPos: 4164, + EndPos: 4168, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 195, - EndLine: 195, - StartPos: 4165, - EndPos: 4167, - }, - Variadic: false, - IsReference: false, - Expr: &expr.ShortArray{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 195, EndLine: 195, StartPos: 4165, EndPos: 4167, }, - Items: []node.Node{}, + }, + Variadic: false, + IsReference: false, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 195, + EndLine: 195, + StartPos: 4165, + EndPos: 4167, + }, + }, + Items: []ast.Vertex{}, }, }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 4172, - EndPos: 4187, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, StartPos: 4172, - EndPos: 4186, + EndPos: 4187, }, - Function: &expr.Variable{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, StartPos: 4172, - EndPos: 4176, + EndPos: 4186, }, - VarName: &node.Identifier{ + }, + Function: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, StartPos: 4172, EndPos: 4176, }, - Value: "foo", }, - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 4176, - EndPos: 4186, - }, - Arguments: []node.Node{ - &node.Argument{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, - StartPos: 4177, - EndPos: 4185, + StartPos: 4172, + EndPos: 4176, }, - IsReference: false, - Variadic: false, - Expr: &expr.Yield{ + }, + Value: []byte("foo"), + }, + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 196, + EndLine: 196, + StartPos: 4176, + EndPos: 4186, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, StartPos: 4177, EndPos: 4185, }, - Value: &expr.Variable{ + }, + IsReference: false, + Variadic: false, + Expr: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, - StartPos: 4183, + StartPos: 4177, EndPos: 4185, }, - VarName: &node.Identifier{ + }, + Value: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 196, EndLine: 196, StartPos: 4183, EndPos: 4185, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 196, + EndLine: 196, + StartPos: 4183, + EndPos: 4185, + }, + }, + Value: []byte("a"), }, }, }, @@ -9477,516 +11435,638 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 198, - EndLine: 198, - StartPos: 4191, - EndPos: 4196, - }, - Expr: &expr.PostDec{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 198, EndLine: 198, StartPos: 4191, - EndPos: 4195, + EndPos: 4196, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprPostDec{ + Node: ast.Node{ Position: &position.Position{ StartLine: 198, EndLine: 198, StartPos: 4191, - EndPos: 4193, + EndPos: 4195, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 198, EndLine: 198, StartPos: 4191, EndPos: 4193, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 198, + EndLine: 198, + StartPos: 4191, + EndPos: 4193, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 199, - EndLine: 199, - StartPos: 4199, - EndPos: 4204, - }, - Expr: &expr.PostInc{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 199, EndLine: 199, StartPos: 4199, - EndPos: 4203, + EndPos: 4204, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprPostInc{ + Node: ast.Node{ Position: &position.Position{ StartLine: 199, EndLine: 199, StartPos: 4199, - EndPos: 4201, + EndPos: 4203, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 199, EndLine: 199, StartPos: 4199, EndPos: 4201, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 199, + EndLine: 199, + StartPos: 4199, + EndPos: 4201, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 200, - EndLine: 200, - StartPos: 4207, - EndPos: 4212, - }, - Expr: &expr.PreDec{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 200, EndLine: 200, StartPos: 4207, - EndPos: 4211, + EndPos: 4212, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprPreDec{ + Node: ast.Node{ Position: &position.Position{ StartLine: 200, EndLine: 200, - StartPos: 4209, + StartPos: 4207, EndPos: 4211, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 200, EndLine: 200, StartPos: 4209, EndPos: 4211, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 200, + EndLine: 200, + StartPos: 4209, + EndPos: 4211, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 201, - EndLine: 201, - StartPos: 4215, - EndPos: 4220, - }, - Expr: &expr.PreInc{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 201, EndLine: 201, StartPos: 4215, - EndPos: 4219, + EndPos: 4220, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprPreInc{ + Node: ast.Node{ Position: &position.Position{ StartLine: 201, EndLine: 201, - StartPos: 4217, + StartPos: 4215, EndPos: 4219, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 201, EndLine: 201, StartPos: 4217, EndPos: 4219, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 201, + EndLine: 201, + StartPos: 4217, + EndPos: 4219, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 4224, - EndPos: 4235, - }, - Expr: &expr.Include{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 203, EndLine: 203, StartPos: 4224, - EndPos: 4234, + EndPos: 4235, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprInclude{ + Node: ast.Node{ Position: &position.Position{ StartLine: 203, EndLine: 203, - StartPos: 4232, + StartPos: 4224, EndPos: 4234, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 203, EndLine: 203, StartPos: 4232, EndPos: 4234, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 203, + EndLine: 203, + StartPos: 4232, + EndPos: 4234, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 4238, - EndPos: 4254, - }, - Expr: &expr.IncludeOnce{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 204, EndLine: 204, StartPos: 4238, - EndPos: 4253, + EndPos: 4254, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprIncludeOnce{ + Node: ast.Node{ Position: &position.Position{ StartLine: 204, EndLine: 204, - StartPos: 4251, + StartPos: 4238, EndPos: 4253, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 204, EndLine: 204, StartPos: 4251, EndPos: 4253, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 204, + EndLine: 204, + StartPos: 4251, + EndPos: 4253, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 4257, - EndPos: 4268, - }, - Expr: &expr.Require{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 205, EndLine: 205, StartPos: 4257, - EndPos: 4267, + EndPos: 4268, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprRequire{ + Node: ast.Node{ Position: &position.Position{ StartLine: 205, EndLine: 205, - StartPos: 4265, + StartPos: 4257, EndPos: 4267, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 205, EndLine: 205, StartPos: 4265, EndPos: 4267, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 205, + EndLine: 205, + StartPos: 4265, + EndPos: 4267, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 4271, - EndPos: 4287, - }, - Expr: &expr.RequireOnce{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 206, EndLine: 206, StartPos: 4271, - EndPos: 4286, + EndPos: 4287, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprRequireOnce{ + Node: ast.Node{ Position: &position.Position{ StartLine: 206, EndLine: 206, - StartPos: 4284, + StartPos: 4271, EndPos: 4286, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 206, EndLine: 206, StartPos: 4284, EndPos: 4286, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 206, + EndLine: 206, + StartPos: 4284, + EndPos: 4286, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 4291, - EndPos: 4309, - }, - Expr: &expr.InstanceOf{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 208, EndLine: 208, StartPos: 4291, - EndPos: 4308, + EndPos: 4309, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprInstanceOf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 208, EndLine: 208, StartPos: 4291, - EndPos: 4293, + EndPos: 4308, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 208, EndLine: 208, StartPos: 4291, EndPos: 4293, }, - Value: "a", }, - }, - Class: &name.Name{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 4305, - EndPos: 4308, - }, - Parts: []node.Node{ - &name.NamePart{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 208, EndLine: 208, - StartPos: 4305, - EndPos: 4308, + StartPos: 4291, + EndPos: 4293, }, - Value: "Foo", + }, + Value: []byte("a"), + }, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 208, + EndLine: 208, + StartPos: 4305, + EndPos: 4308, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 208, + EndLine: 208, + StartPos: 4305, + EndPos: 4308, + }, + }, + Value: []byte("Foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4312, - EndPos: 4340, - }, - Expr: &expr.InstanceOf{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 209, EndLine: 209, StartPos: 4312, - EndPos: 4339, + EndPos: 4340, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprInstanceOf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 209, EndLine: 209, StartPos: 4312, - EndPos: 4314, + EndPos: 4339, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 209, EndLine: 209, StartPos: 4312, EndPos: 4314, }, - Value: "a", }, - }, - Class: &name.Relative{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4326, - EndPos: 4339, - }, - Parts: []node.Node{ - &name.NamePart{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 209, EndLine: 209, - StartPos: 4336, - EndPos: 4339, + StartPos: 4312, + EndPos: 4314, }, - Value: "Foo", + }, + Value: []byte("a"), + }, + }, + Class: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 209, + EndLine: 209, + StartPos: 4326, + EndPos: 4339, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 209, + EndLine: 209, + StartPos: 4336, + EndPos: 4339, + }, + }, + Value: []byte("Foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4343, - EndPos: 4362, - }, - Expr: &expr.InstanceOf{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 210, EndLine: 210, StartPos: 4343, - EndPos: 4361, + EndPos: 4362, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprInstanceOf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 210, EndLine: 210, StartPos: 4343, - EndPos: 4345, + EndPos: 4361, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 210, EndLine: 210, StartPos: 4343, EndPos: 4345, }, - Value: "a", }, - }, - Class: &name.FullyQualified{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4357, - EndPos: 4361, - }, - Parts: []node.Node{ - &name.NamePart{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 210, EndLine: 210, - StartPos: 4358, - EndPos: 4361, + StartPos: 4343, + EndPos: 4345, }, - Value: "Foo", + }, + Value: []byte("a"), + }, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 210, + EndLine: 210, + StartPos: 4357, + EndPos: 4361, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 210, + EndLine: 210, + StartPos: 4358, + EndPos: 4361, + }, + }, + Value: []byte("Foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 212, - EndLine: 212, - StartPos: 4366, - EndPos: 4380, - }, - Expr: &expr.Isset{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 212, EndLine: 212, StartPos: 4366, - EndPos: 4379, + EndPos: 4380, }, - Variables: []node.Node{ - &expr.Variable{ - Position: &position.Position{ - StartLine: 212, - EndLine: 212, - StartPos: 4372, - EndPos: 4374, - }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprIsset{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 212, + EndLine: 212, + StartPos: 4366, + EndPos: 4379, + }, + }, + Vars: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 212, EndLine: 212, StartPos: 4372, EndPos: 4374, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 212, + EndLine: 212, + StartPos: 4372, + EndPos: 4374, + }, + }, + Value: []byte("a"), }, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 212, - EndLine: 212, - StartPos: 4376, - EndPos: 4378, - }, - VarName: &node.Identifier{ + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 212, EndLine: 212, StartPos: 4376, EndPos: 4378, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 212, + EndLine: 212, + StartPos: 4376, + EndPos: 4378, + }, + }, + Value: []byte("b"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4383, - EndPos: 4394, - }, - Expr: &expr.Isset{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 213, EndLine: 213, StartPos: 4383, - EndPos: 4393, + EndPos: 4394, }, - Variables: []node.Node{ - &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4389, - EndPos: 4392, - }, - Constant: &name.Name{ + }, + Expr: &ast.ExprIsset{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 213, + EndLine: 213, + StartPos: 4383, + EndPos: 4393, + }, + }, + Vars: []ast.Vertex{ + &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 213, EndLine: 213, StartPos: 4389, EndPos: 4392, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4389, - EndPos: 4392, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 213, + EndLine: 213, + StartPos: 4389, + EndPos: 4392, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 213, + EndLine: 213, + StartPos: 4389, + EndPos: 4392, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, @@ -9994,276 +12074,342 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4397, - EndPos: 4409, - }, - Expr: &assign.Assign{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 214, EndLine: 214, StartPos: 4397, - EndPos: 4408, + EndPos: 4409, }, - Variable: &expr.List{ + }, + Expr: &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 214, EndLine: 214, StartPos: 4397, - EndPos: 4403, - }, - Items: []node.Node{}, - }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4406, EndPos: 4408, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 214, + EndLine: 214, + StartPos: 4397, + EndPos: 4403, + }, + }, + Items: []ast.Vertex{}, + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 214, EndLine: 214, StartPos: 4406, EndPos: 4408, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 214, + EndLine: 214, + StartPos: 4406, + EndPos: 4408, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4412, - EndPos: 4430, - }, - Expr: &assign.Assign{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4412, - EndPos: 4429, + EndPos: 4430, }, - Variable: &expr.List{ + }, + Expr: &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4412, - EndPos: 4424, + EndPos: 4429, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4417, - EndPos: 4419, - }, - Val: &expr.Variable{ + }, + Var: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 215, + EndLine: 215, + StartPos: 4412, + EndPos: 4424, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4417, EndPos: 4419, }, - VarName: &node.Identifier{ + }, + Val: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4417, EndPos: 4419, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 215, + EndLine: 215, + StartPos: 4417, + EndPos: 4419, + }, + }, + Value: []byte("a"), }, }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4421, - EndPos: 4423, - }, - Val: &expr.Variable{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4421, EndPos: 4423, }, - VarName: &node.Identifier{ + }, + Val: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4421, EndPos: 4423, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 215, + EndLine: 215, + StartPos: 4421, + EndPos: 4423, + }, + }, + Value: []byte("b"), }, }, }, }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4427, - EndPos: 4429, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 215, EndLine: 215, StartPos: 4427, EndPos: 4429, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 215, + EndLine: 215, + StartPos: 4427, + EndPos: 4429, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4433, - EndPos: 4449, - }, - Expr: &assign.Assign{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4433, - EndPos: 4448, + EndPos: 4449, }, - Variable: &expr.List{ + }, + Expr: &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4433, - EndPos: 4443, + EndPos: 4448, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4438, - EndPos: 4442, - }, - Val: &expr.ArrayDimFetch{ + }, + Var: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 216, + EndLine: 216, + StartPos: 4433, + EndPos: 4443, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4438, EndPos: 4442, }, - Variable: &expr.Variable{ + }, + Val: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4438, - EndPos: 4440, + EndPos: 4442, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4438, EndPos: 4440, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 216, + EndLine: 216, + StartPos: 4438, + EndPos: 4440, + }, + }, + Value: []byte("a"), }, }, }, }, }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4446, - EndPos: 4448, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 216, EndLine: 216, StartPos: 4446, EndPos: 4448, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 216, + EndLine: 216, + StartPos: 4446, + EndPos: 4448, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 217, - EndLine: 217, - StartPos: 4452, - EndPos: 4472, - }, - Expr: &assign.Assign{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4452, - EndPos: 4471, + EndPos: 4472, }, - Variable: &expr.List{ + }, + Expr: &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4452, - EndPos: 4466, + EndPos: 4471, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 217, - EndLine: 217, - StartPos: 4457, - EndPos: 4465, - }, - Val: &expr.List{ + }, + Var: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 217, + EndLine: 217, + StartPos: 4452, + EndPos: 4466, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4457, EndPos: 4465, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 217, - EndLine: 217, - StartPos: 4462, - EndPos: 4464, - }, - Val: &expr.Variable{ + }, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 217, + EndLine: 217, + StartPos: 4457, + EndPos: 4465, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4462, EndPos: 4464, }, - VarName: &node.Identifier{ + }, + Val: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4462, EndPos: 4464, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 217, + EndLine: 217, + StartPos: 4462, + EndPos: 4464, + }, + }, + Value: []byte("a"), }, }, }, @@ -10272,3654 +12418,4522 @@ func TestPhp5(t *testing.T) { }, }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 217, - EndLine: 217, - StartPos: 4469, - EndPos: 4471, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 217, EndLine: 217, StartPos: 4469, EndPos: 4471, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 217, + EndLine: 217, + StartPos: 4469, + EndPos: 4471, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4476, - EndPos: 4486, - }, - Expr: &expr.MethodCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 219, EndLine: 219, StartPos: 4476, - EndPos: 4485, + EndPos: 4486, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 219, EndLine: 219, StartPos: 4476, - EndPos: 4478, + EndPos: 4485, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 219, EndLine: 219, StartPos: 4476, EndPos: 4478, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 219, + EndLine: 219, + StartPos: 4476, + EndPos: 4478, + }, + }, + Value: []byte("a"), }, }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4480, - EndPos: 4483, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 219, + EndLine: 219, + StartPos: 4480, + EndPos: 4483, + }, }, - Value: "foo", + Value: []byte("foo"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4483, - EndPos: 4485, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 219, + EndLine: 219, + StartPos: 4483, + EndPos: 4485, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4489, - EndPos: 4497, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 220, EndLine: 220, StartPos: 4489, - EndPos: 4496, + EndPos: 4497, }, - Class: &name.Name{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 220, EndLine: 220, - StartPos: 4493, + StartPos: 4489, EndPos: 4496, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4493, - EndPos: 4496, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 220, + EndLine: 220, + StartPos: 4493, + EndPos: 4496, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 220, + EndLine: 220, + StartPos: 4493, + EndPos: 4496, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 221, - EndLine: 221, - StartPos: 4500, - EndPos: 4520, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 221, EndLine: 221, StartPos: 4500, - EndPos: 4519, + EndPos: 4520, }, - Class: &name.Relative{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 221, EndLine: 221, - StartPos: 4504, - EndPos: 4517, + StartPos: 4500, + EndPos: 4519, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 221, - EndLine: 221, - StartPos: 4514, - EndPos: 4517, + }, + Class: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 221, + EndLine: 221, + StartPos: 4504, + EndPos: 4517, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 221, + EndLine: 221, + StartPos: 4514, + EndPos: 4517, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 221, - EndLine: 221, - StartPos: 4517, - EndPos: 4519, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 221, + EndLine: 221, + StartPos: 4517, + EndPos: 4519, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4523, - EndPos: 4534, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 222, EndLine: 222, StartPos: 4523, - EndPos: 4533, + EndPos: 4534, }, - Class: &name.FullyQualified{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 222, EndLine: 222, - StartPos: 4527, - EndPos: 4531, + StartPos: 4523, + EndPos: 4533, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4528, - EndPos: 4531, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 222, + EndLine: 222, + StartPos: 4527, + EndPos: 4531, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 222, + EndLine: 222, + StartPos: 4528, + EndPos: 4531, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4531, - EndPos: 4533, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 222, + EndLine: 222, + StartPos: 4531, + EndPos: 4533, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4537, - EndPos: 4547, - }, - Expr: &expr.Print{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 223, EndLine: 223, StartPos: 4537, - EndPos: 4545, + EndPos: 4547, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprPrint{ + Node: ast.Node{ Position: &position.Position{ StartLine: 223, EndLine: 223, - StartPos: 4543, + StartPos: 4537, EndPos: 4545, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 223, EndLine: 223, StartPos: 4543, EndPos: 4545, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 223, + EndLine: 223, + StartPos: 4543, + EndPos: 4545, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4550, - EndPos: 4558, - }, - Expr: &expr.PropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 224, EndLine: 224, StartPos: 4550, - EndPos: 4557, + EndPos: 4558, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 224, EndLine: 224, StartPos: 4550, - EndPos: 4552, + EndPos: 4557, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 224, EndLine: 224, StartPos: 4550, EndPos: 4552, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 224, + EndLine: 224, + StartPos: 4550, + EndPos: 4552, + }, + }, + Value: []byte("a"), }, }, - Property: &node.Identifier{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4554, - EndPos: 4557, + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 224, + EndLine: 224, + StartPos: 4554, + EndPos: 4557, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4561, - EndPos: 4572, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 225, EndLine: 225, StartPos: 4561, - EndPos: 4570, + EndPos: 4572, }, - Variable: &expr.PropertyFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 225, EndLine: 225, StartPos: 4561, - EndPos: 4568, + EndPos: 4570, }, - Variable: &expr.Variable{ + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 225, EndLine: 225, StartPos: 4561, - EndPos: 4563, + EndPos: 4568, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 225, EndLine: 225, StartPos: 4561, EndPos: 4563, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 225, + EndLine: 225, + StartPos: 4561, + EndPos: 4563, + }, + }, + Value: []byte("a"), }, }, - Property: &node.Identifier{ + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 225, + EndLine: 225, + StartPos: 4565, + EndPos: 4568, + }, + }, + Value: []byte("foo"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 225, EndLine: 225, - StartPos: 4565, - EndPos: 4568, + StartPos: 4569, + EndPos: 4570, }, - Value: "foo", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4569, - EndPos: 4570, - }, - Value: "1", + Value: []byte("1"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 226, - EndLine: 226, - StartPos: 4575, - EndPos: 4604, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4602, + EndPos: 4604, }, - Variable: &expr.PropertyFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4600, + EndPos: 4602, }, - Variable: &expr.MethodCall{ + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4594, + EndPos: 4600, }, - Variable: &expr.PropertyFetch{ + }, + Var: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4587, + EndPos: 4594, }, - Variable: &expr.PropertyFetch{ + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4582, + EndPos: 4587, }, - Variable: &expr.Variable{ + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, - EndPos: 4577, + EndPos: 4582, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, StartPos: 4575, EndPos: 4577, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 226, + EndLine: 226, + StartPos: 4575, + EndPos: 4577, + }, + }, + Value: []byte("a"), }, }, - Property: &node.Identifier{ + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 226, + EndLine: 226, + StartPos: 4579, + EndPos: 4582, + }, + }, + Value: []byte("foo"), + }, + }, + Property: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, - StartPos: 4579, - EndPos: 4582, + StartPos: 4584, + EndPos: 4587, }, - Value: "foo", }, + Value: []byte("bar"), }, - Property: &node.Identifier{ + }, + Method: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, - StartPos: 4584, - EndPos: 4587, + StartPos: 4589, + EndPos: 4592, }, - Value: "bar", }, + Value: []byte("baz"), }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 226, - EndLine: 226, - StartPos: 4589, - EndPos: 4592, - }, - Value: "baz", - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 226, - EndLine: 226, - StartPos: 4592, - EndPos: 4594, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 226, + EndLine: 226, + StartPos: 4592, + EndPos: 4594, + }, }, }, }, - Property: &node.Identifier{ + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 226, + EndLine: 226, + StartPos: 4596, + EndPos: 4600, + }, + }, + Value: []byte("quux"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 226, EndLine: 226, - StartPos: 4596, - EndPos: 4600, + StartPos: 4601, + EndPos: 4602, }, - Value: "quux", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 226, - EndLine: 226, - StartPos: 4601, - EndPos: 4602, - }, - Value: "0", + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4607, - EndPos: 4623, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, StartPos: 4607, - EndPos: 4621, + EndPos: 4623, }, - Variable: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, StartPos: 4607, - EndPos: 4618, + EndPos: 4621, }, - Variable: &expr.MethodCall{ + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, StartPos: 4607, - EndPos: 4616, + EndPos: 4618, }, - Variable: &expr.Variable{ + }, + Var: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, StartPos: 4607, - EndPos: 4609, + EndPos: 4616, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, StartPos: 4607, EndPos: 4609, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 227, + EndLine: 227, + StartPos: 4607, + EndPos: 4609, + }, + }, + Value: []byte("a"), }, }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4611, - EndPos: 4614, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 227, + EndLine: 227, + StartPos: 4611, + EndPos: 4614, + }, }, - Value: "foo", + Value: []byte("foo"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4614, - EndPos: 4616, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 227, + EndLine: 227, + StartPos: 4614, + EndPos: 4616, + }, }, }, }, - Dim: &scalar.Lnumber{ + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 227, + EndLine: 227, + StartPos: 4617, + EndPos: 4618, + }, + }, + Value: []byte("1"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 227, EndLine: 227, - StartPos: 4617, - EndPos: 4618, + StartPos: 4620, + EndPos: 4621, }, - Value: "1", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4620, - EndPos: 4621, - }, - Value: "1", + Value: []byte("1"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4626, - EndPos: 4635, - }, - Expr: &expr.ShellExec{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 228, EndLine: 228, StartPos: 4626, - EndPos: 4634, + EndPos: 4635, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4627, - EndPos: 4631, - }, - Value: "cmd ", + }, + Expr: &ast.ExprShellExec{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 228, + EndLine: 228, + StartPos: 4626, + EndPos: 4634, }, - &expr.Variable{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4631, - EndPos: 4633, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 228, + EndLine: 228, + StartPos: 4627, + EndPos: 4631, + }, }, - VarName: &node.Identifier{ + Value: []byte("cmd "), + }, + &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 228, EndLine: 228, StartPos: 4631, EndPos: 4633, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 228, + EndLine: 228, + StartPos: 4631, + EndPos: 4633, + }, + }, + Value: []byte("a"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4638, - EndPos: 4644, - }, - Expr: &expr.ShellExec{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 229, EndLine: 229, StartPos: 4638, - EndPos: 4643, + EndPos: 4644, }, - Parts: []node.Node{ - &scalar.EncapsedStringPart{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4639, - EndPos: 4642, + }, + Expr: &ast.ExprShellExec{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 229, + EndLine: 229, + StartPos: 4638, + EndPos: 4643, + }, + }, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 229, + EndLine: 229, + StartPos: 4639, + EndPos: 4642, + }, }, - Value: "cmd", + Value: []byte("cmd"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4647, - EndPos: 4650, - }, - Expr: &expr.ShellExec{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 230, EndLine: 230, StartPos: 4647, - EndPos: 4649, + EndPos: 4650, }, - Parts: []node.Node{}, + }, + Expr: &ast.ExprShellExec{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 230, + EndLine: 230, + StartPos: 4647, + EndPos: 4649, + }, + }, + Parts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4653, - EndPos: 4656, - }, - Expr: &expr.ShortArray{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 231, EndLine: 231, StartPos: 4653, - EndPos: 4655, + EndPos: 4656, }, - Items: []node.Node{}, + }, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 231, + EndLine: 231, + StartPos: 4653, + EndPos: 4655, + }, + }, + Items: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4659, - EndPos: 4663, - }, - Expr: &expr.ShortArray{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 232, EndLine: 232, StartPos: 4659, - EndPos: 4662, + EndPos: 4663, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4660, - EndPos: 4661, - }, - Val: &scalar.Lnumber{ + }, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 232, + EndLine: 232, + StartPos: 4659, + EndPos: 4662, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 232, EndLine: 232, StartPos: 4660, EndPos: 4661, }, - Value: "1", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 232, + EndLine: 232, + StartPos: 4660, + EndPos: 4661, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4666, - EndPos: 4679, - }, - Expr: &expr.ShortArray{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 233, EndLine: 233, StartPos: 4666, - EndPos: 4678, + EndPos: 4679, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4667, - EndPos: 4671, - }, - Key: &scalar.Lnumber{ + }, + Expr: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 233, + EndLine: 233, + StartPos: 4666, + EndPos: 4678, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 233, EndLine: 233, StartPos: 4667, - EndPos: 4668, - }, - Value: "1", - }, - Val: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4670, EndPos: 4671, }, - Value: "1", + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 233, + EndLine: 233, + StartPos: 4667, + EndPos: 4668, + }, + }, + Value: []byte("1"), + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 233, + EndLine: 233, + StartPos: 4670, + EndPos: 4671, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4673, - EndPos: 4676, - }, - Val: &expr.Reference{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 233, EndLine: 233, StartPos: 4673, EndPos: 4676, }, - Variable: &expr.Variable{ + }, + Val: &ast.ExprReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 233, EndLine: 233, - StartPos: 4674, + StartPos: 4673, EndPos: 4676, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 233, EndLine: 233, StartPos: 4674, EndPos: 4676, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 233, + EndLine: 233, + StartPos: 4674, + EndPos: 4676, + }, + }, + Value: []byte("b"), }, }, }, }, - &expr.ArrayItem{}, + &ast.ExprArrayItem{}, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4683, - EndPos: 4694, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 235, EndLine: 235, StartPos: 4683, - EndPos: 4693, + EndPos: 4694, }, - Class: &name.Name{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 235, EndLine: 235, StartPos: 4683, - EndPos: 4686, + EndPos: 4693, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4683, - EndPos: 4686, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 235, + EndLine: 235, + StartPos: 4683, + EndPos: 4686, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 235, + EndLine: 235, + StartPos: 4683, + EndPos: 4686, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Call: &node.Identifier{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4688, - EndPos: 4691, + Call: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 235, + EndLine: 235, + StartPos: 4688, + EndPos: 4691, + }, }, - Value: "bar", + Value: []byte("bar"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4691, - EndPos: 4693, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 235, + EndLine: 235, + StartPos: 4691, + EndPos: 4693, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4697, - EndPos: 4718, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 236, EndLine: 236, StartPos: 4697, - EndPos: 4717, + EndPos: 4718, }, - Class: &name.Relative{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 236, EndLine: 236, StartPos: 4697, - EndPos: 4710, + EndPos: 4717, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4707, - EndPos: 4710, + }, + Class: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 236, + EndLine: 236, + StartPos: 4697, + EndPos: 4710, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 236, + EndLine: 236, + StartPos: 4707, + EndPos: 4710, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Call: &node.Identifier{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4712, - EndPos: 4715, + Call: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 236, + EndLine: 236, + StartPos: 4712, + EndPos: 4715, + }, }, - Value: "bar", + Value: []byte("bar"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4715, - EndPos: 4717, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 236, + EndLine: 236, + StartPos: 4715, + EndPos: 4717, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4721, - EndPos: 4733, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 237, EndLine: 237, StartPos: 4721, - EndPos: 4732, + EndPos: 4733, }, - Class: &name.FullyQualified{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 237, EndLine: 237, StartPos: 4721, - EndPos: 4725, + EndPos: 4732, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4722, - EndPos: 4725, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 237, + EndLine: 237, + StartPos: 4721, + EndPos: 4725, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 237, + EndLine: 237, + StartPos: 4722, + EndPos: 4725, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Call: &node.Identifier{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4727, - EndPos: 4730, + Call: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 237, + EndLine: 237, + StartPos: 4727, + EndPos: 4730, + }, }, - Value: "bar", + Value: []byte("bar"), }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4730, - EndPos: 4732, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 237, + EndLine: 237, + StartPos: 4730, + EndPos: 4732, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4736, - EndPos: 4748, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 238, EndLine: 238, StartPos: 4736, - EndPos: 4747, + EndPos: 4748, }, - Class: &name.Name{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 238, EndLine: 238, StartPos: 4736, - EndPos: 4739, + EndPos: 4747, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4736, - EndPos: 4739, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 238, + EndLine: 238, + StartPos: 4736, + EndPos: 4739, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 238, + EndLine: 238, + StartPos: 4736, + EndPos: 4739, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Call: &expr.Variable{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4741, - EndPos: 4745, - }, - VarName: &node.Identifier{ + Call: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 238, EndLine: 238, StartPos: 4741, EndPos: 4745, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 238, + EndLine: 238, + StartPos: 4741, + EndPos: 4745, + }, + }, + Value: []byte("bar"), }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4745, - EndPos: 4747, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 238, + EndLine: 238, + StartPos: 4745, + EndPos: 4747, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4751, - EndPos: 4764, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 239, EndLine: 239, StartPos: 4751, - EndPos: 4763, + EndPos: 4764, }, - Class: &expr.Variable{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 239, EndLine: 239, StartPos: 4751, - EndPos: 4755, + EndPos: 4763, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 239, EndLine: 239, StartPos: 4751, EndPos: 4755, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 239, + EndLine: 239, + StartPos: 4751, + EndPos: 4755, + }, + }, + Value: []byte("foo"), }, }, - Call: &expr.Variable{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4757, - EndPos: 4761, - }, - VarName: &node.Identifier{ + Call: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 239, EndLine: 239, StartPos: 4757, EndPos: 4761, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 239, + EndLine: 239, + StartPos: 4757, + EndPos: 4761, + }, + }, + Value: []byte("bar"), }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4761, - EndPos: 4763, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 239, + EndLine: 239, + StartPos: 4761, + EndPos: 4763, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 240, - EndLine: 240, - StartPos: 4767, - EndPos: 4777, - }, - Expr: &expr.StaticPropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 240, EndLine: 240, StartPos: 4767, - EndPos: 4776, + EndPos: 4777, }, - Class: &name.Name{ + }, + Expr: &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 240, EndLine: 240, StartPos: 4767, - EndPos: 4770, + EndPos: 4776, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 240, - EndLine: 240, - StartPos: 4767, - EndPos: 4770, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 240, + EndLine: 240, + StartPos: 4767, + EndPos: 4770, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 240, + EndLine: 240, + StartPos: 4767, + EndPos: 4770, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 240, - EndLine: 240, - StartPos: 4772, - EndPos: 4776, - }, - VarName: &node.Identifier{ + Property: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 240, EndLine: 240, StartPos: 4772, EndPos: 4776, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 240, + EndLine: 240, + StartPos: 4772, + EndPos: 4776, + }, + }, + Value: []byte("bar"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4780, - EndPos: 4800, - }, - Expr: &expr.StaticPropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 241, EndLine: 241, StartPos: 4780, - EndPos: 4799, + EndPos: 4800, }, - Class: &name.Relative{ + }, + Expr: &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 241, EndLine: 241, StartPos: 4780, - EndPos: 4793, + EndPos: 4799, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4790, - EndPos: 4793, + }, + Class: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 241, + EndLine: 241, + StartPos: 4780, + EndPos: 4793, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 241, + EndLine: 241, + StartPos: 4790, + EndPos: 4793, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4795, - EndPos: 4799, - }, - VarName: &node.Identifier{ + Property: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 241, EndLine: 241, StartPos: 4795, EndPos: 4799, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 241, + EndLine: 241, + StartPos: 4795, + EndPos: 4799, + }, + }, + Value: []byte("bar"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4803, - EndPos: 4814, - }, - Expr: &expr.StaticPropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 242, EndLine: 242, StartPos: 4803, - EndPos: 4813, + EndPos: 4814, }, - Class: &name.FullyQualified{ + }, + Expr: &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 242, EndLine: 242, StartPos: 4803, - EndPos: 4807, + EndPos: 4813, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4804, - EndPos: 4807, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 242, + EndLine: 242, + StartPos: 4803, + EndPos: 4807, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 242, + EndLine: 242, + StartPos: 4804, + EndPos: 4807, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4809, - EndPos: 4813, - }, - VarName: &node.Identifier{ + Property: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 242, EndLine: 242, StartPos: 4809, EndPos: 4813, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 242, + EndLine: 242, + StartPos: 4809, + EndPos: 4813, + }, + }, + Value: []byte("bar"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4817, - EndPos: 4830, - }, - Expr: &expr.Ternary{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 243, EndLine: 243, StartPos: 4817, - EndPos: 4829, + EndPos: 4830, }, - Condition: &expr.Variable{ + }, + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 243, EndLine: 243, StartPos: 4817, - EndPos: 4819, + EndPos: 4829, }, - VarName: &node.Identifier{ + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 243, EndLine: 243, StartPos: 4817, EndPos: 4819, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 243, + EndLine: 243, + StartPos: 4817, + EndPos: 4819, + }, + }, + Value: []byte("a"), }, }, - IfTrue: &expr.Variable{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4822, - EndPos: 4824, - }, - VarName: &node.Identifier{ + IfTrue: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 243, EndLine: 243, StartPos: 4822, EndPos: 4824, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 243, + EndLine: 243, + StartPos: 4822, + EndPos: 4824, + }, + }, + Value: []byte("b"), }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4827, - EndPos: 4829, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 243, EndLine: 243, StartPos: 4827, EndPos: 4829, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 243, + EndLine: 243, + StartPos: 4827, + EndPos: 4829, + }, + }, + Value: []byte("c"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4833, - EndPos: 4843, - }, - Expr: &expr.Ternary{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 244, EndLine: 244, StartPos: 4833, - EndPos: 4842, + EndPos: 4843, }, - Condition: &expr.Variable{ + }, + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 244, EndLine: 244, StartPos: 4833, - EndPos: 4835, + EndPos: 4842, }, - VarName: &node.Identifier{ + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 244, EndLine: 244, StartPos: 4833, EndPos: 4835, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 244, + EndLine: 244, + StartPos: 4833, + EndPos: 4835, + }, + }, + Value: []byte("a"), }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4840, - EndPos: 4842, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 244, EndLine: 244, StartPos: 4840, EndPos: 4842, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 244, + EndLine: 244, + StartPos: 4840, + EndPos: 4842, + }, + }, + Value: []byte("c"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4846, - EndPos: 4869, - }, - Expr: &expr.Ternary{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4846, - EndPos: 4868, + EndPos: 4869, }, - Condition: &expr.Variable{ + }, + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4846, - EndPos: 4848, + EndPos: 4868, }, - VarName: &node.Identifier{ + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4846, EndPos: 4848, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 245, + EndLine: 245, + StartPos: 4846, + EndPos: 4848, + }, + }, + Value: []byte("a"), }, }, - IfTrue: &expr.Ternary{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4851, - EndPos: 4863, - }, - Condition: &expr.Variable{ + IfTrue: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4851, - EndPos: 4853, + EndPos: 4863, }, - VarName: &node.Identifier{ + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4851, EndPos: 4853, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 245, + EndLine: 245, + StartPos: 4851, + EndPos: 4853, + }, + }, + Value: []byte("b"), }, }, - IfTrue: &expr.Variable{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4856, - EndPos: 4858, - }, - VarName: &node.Identifier{ + IfTrue: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4856, EndPos: 4858, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 245, + EndLine: 245, + StartPos: 4856, + EndPos: 4858, + }, + }, + Value: []byte("c"), }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4861, - EndPos: 4863, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4861, EndPos: 4863, }, - Value: "d", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 245, + EndLine: 245, + StartPos: 4861, + EndPos: 4863, + }, + }, + Value: []byte("d"), }, }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4866, - EndPos: 4868, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 245, EndLine: 245, StartPos: 4866, EndPos: 4868, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 245, + EndLine: 245, + StartPos: 4866, + EndPos: 4868, + }, + }, + Value: []byte("e"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4872, - EndPos: 4895, - }, - Expr: &expr.Ternary{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4872, - EndPos: 4894, + EndPos: 4895, }, - Condition: &expr.Ternary{ + }, + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4872, - EndPos: 4884, + EndPos: 4894, }, - Condition: &expr.Variable{ + }, + Condition: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4872, - EndPos: 4874, + EndPos: 4884, }, - VarName: &node.Identifier{ + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4872, EndPos: 4874, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 246, + EndLine: 246, + StartPos: 4872, + EndPos: 4874, + }, + }, + Value: []byte("a"), }, }, - IfTrue: &expr.Variable{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4877, - EndPos: 4879, - }, - VarName: &node.Identifier{ + IfTrue: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4877, EndPos: 4879, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 246, + EndLine: 246, + StartPos: 4877, + EndPos: 4879, + }, + }, + Value: []byte("b"), }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4882, - EndPos: 4884, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4882, EndPos: 4884, }, - Value: "c", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 246, + EndLine: 246, + StartPos: 4882, + EndPos: 4884, + }, + }, + Value: []byte("c"), }, }, }, - IfTrue: &expr.Variable{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4887, - EndPos: 4889, - }, - VarName: &node.Identifier{ + IfTrue: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4887, EndPos: 4889, }, - Value: "d", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 246, + EndLine: 246, + StartPos: 4887, + EndPos: 4889, + }, + }, + Value: []byte("d"), }, }, - IfFalse: &expr.Variable{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4892, - EndPos: 4894, - }, - VarName: &node.Identifier{ + IfFalse: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 246, EndLine: 246, StartPos: 4892, EndPos: 4894, }, - Value: "e", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 246, + EndLine: 246, + StartPos: 4892, + EndPos: 4894, + }, + }, + Value: []byte("e"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4898, - EndPos: 4902, - }, - Expr: &expr.UnaryMinus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 247, EndLine: 247, StartPos: 4898, - EndPos: 4901, + EndPos: 4902, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprUnaryMinus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 247, EndLine: 247, - StartPos: 4899, + StartPos: 4898, EndPos: 4901, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 247, EndLine: 247, StartPos: 4899, EndPos: 4901, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 247, + EndLine: 247, + StartPos: 4899, + EndPos: 4901, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4905, - EndPos: 4909, - }, - Expr: &expr.UnaryPlus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 248, EndLine: 248, StartPos: 4905, - EndPos: 4908, + EndPos: 4909, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprUnaryPlus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 248, EndLine: 248, - StartPos: 4906, + StartPos: 4905, EndPos: 4908, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 248, EndLine: 248, StartPos: 4906, EndPos: 4908, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 248, + EndLine: 248, + StartPos: 4906, + EndPos: 4908, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4912, - EndPos: 4916, - }, - Expr: &expr.Variable{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 249, EndLine: 249, StartPos: 4912, - EndPos: 4915, + EndPos: 4916, }, - VarName: &expr.Variable{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 249, EndLine: 249, - StartPos: 4913, + StartPos: 4912, EndPos: 4915, }, - VarName: &node.Identifier{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 249, EndLine: 249, StartPos: 4913, EndPos: 4915, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 249, + EndLine: 249, + StartPos: 4913, + EndPos: 4915, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4919, - EndPos: 4924, - }, - Expr: &expr.Variable{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 250, EndLine: 250, StartPos: 4919, - EndPos: 4923, + EndPos: 4924, }, - VarName: &expr.Variable{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 250, EndLine: 250, - StartPos: 4920, + StartPos: 4919, EndPos: 4923, }, - VarName: &expr.Variable{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 250, EndLine: 250, - StartPos: 4921, + StartPos: 4920, EndPos: 4923, }, - VarName: &node.Identifier{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 250, EndLine: 250, StartPos: 4921, EndPos: 4923, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 250, + EndLine: 250, + StartPos: 4921, + EndPos: 4923, + }, + }, + Value: []byte("a"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4927, - EndPos: 4933, - }, - Expr: &expr.Yield{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 251, EndLine: 251, StartPos: 4927, - EndPos: 4932, + EndPos: 4933, + }, + }, + Expr: &ast.ExprYield{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 251, + EndLine: 251, + StartPos: 4927, + EndPos: 4932, + }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4936, - EndPos: 4945, - }, - Expr: &expr.Yield{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 252, EndLine: 252, StartPos: 4936, - EndPos: 4944, + EndPos: 4945, }, - Value: &expr.Variable{ + }, + Expr: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 252, EndLine: 252, - StartPos: 4942, + StartPos: 4936, EndPos: 4944, }, - VarName: &node.Identifier{ + }, + Value: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 252, EndLine: 252, StartPos: 4942, EndPos: 4944, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 252, + EndLine: 252, + StartPos: 4942, + EndPos: 4944, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4948, - EndPos: 4963, - }, - Expr: &expr.Yield{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 253, EndLine: 253, StartPos: 4948, - EndPos: 4962, + EndPos: 4963, }, - Key: &expr.Variable{ + }, + Expr: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 253, EndLine: 253, - StartPos: 4954, - EndPos: 4956, + StartPos: 4948, + EndPos: 4962, }, - VarName: &node.Identifier{ + }, + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 253, EndLine: 253, StartPos: 4954, EndPos: 4956, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 253, + EndLine: 253, + StartPos: 4954, + EndPos: 4956, + }, + }, + Value: []byte("a"), }, }, - Value: &expr.Variable{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4960, - EndPos: 4962, - }, - VarName: &node.Identifier{ + Value: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 253, EndLine: 253, StartPos: 4960, EndPos: 4962, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 253, + EndLine: 253, + StartPos: 4960, + EndPos: 4962, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4966, - EndPos: 4983, - }, - Expr: &expr.Yield{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 254, EndLine: 254, StartPos: 4966, - EndPos: 4982, + EndPos: 4983, }, - Value: &expr.ClassConstFetch{ + }, + Expr: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 254, EndLine: 254, - StartPos: 4972, + StartPos: 4966, EndPos: 4982, }, - Class: &name.Name{ + }, + Value: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 254, EndLine: 254, StartPos: 4972, - EndPos: 4975, + EndPos: 4982, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4972, - EndPos: 4975, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 254, + EndLine: 254, + StartPos: 4972, + EndPos: 4975, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 254, + EndLine: 254, + StartPos: 4972, + EndPos: 4975, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4977, - EndPos: 4982, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 254, + EndLine: 254, + StartPos: 4977, + EndPos: 4982, + }, }, - Value: "class", + Value: []byte("class"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4986, - EndPos: 5009, - }, - Expr: &expr.Yield{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 255, EndLine: 255, StartPos: 4986, - EndPos: 5008, + EndPos: 5009, }, - Key: &expr.Variable{ + }, + Expr: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 255, EndLine: 255, - StartPos: 4992, - EndPos: 4994, + StartPos: 4986, + EndPos: 5008, }, - VarName: &node.Identifier{ + }, + Key: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 255, EndLine: 255, StartPos: 4992, EndPos: 4994, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 255, + EndLine: 255, + StartPos: 4992, + EndPos: 4994, + }, + }, + Value: []byte("a"), }, }, - Value: &expr.ClassConstFetch{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4998, - EndPos: 5008, - }, - Class: &name.Name{ + Value: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 255, EndLine: 255, StartPos: 4998, - EndPos: 5001, + EndPos: 5008, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4998, - EndPos: 5001, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 255, + EndLine: 255, + StartPos: 4998, + EndPos: 5001, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 255, + EndLine: 255, + StartPos: 4998, + EndPos: 5001, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 5003, - EndPos: 5008, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 255, + EndLine: 255, + StartPos: 5003, + EndPos: 5008, + }, }, - Value: "class", + Value: []byte("class"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 257, - EndLine: 257, - StartPos: 5015, - EndPos: 5025, - }, - Expr: &cast.Array{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 257, EndLine: 257, StartPos: 5015, - EndPos: 5024, + EndPos: 5025, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastArray{ + Node: ast.Node{ Position: &position.Position{ StartLine: 257, EndLine: 257, - StartPos: 5022, + StartPos: 5015, EndPos: 5024, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 257, EndLine: 257, StartPos: 5022, EndPos: 5024, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 257, + EndLine: 257, + StartPos: 5022, + EndPos: 5024, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 258, - EndLine: 258, - StartPos: 5028, - EndPos: 5040, - }, - Expr: &cast.Bool{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 258, EndLine: 258, StartPos: 5028, - EndPos: 5039, + EndPos: 5040, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastBool{ + Node: ast.Node{ Position: &position.Position{ StartLine: 258, EndLine: 258, - StartPos: 5037, + StartPos: 5028, EndPos: 5039, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 258, EndLine: 258, StartPos: 5037, EndPos: 5039, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 258, + EndLine: 258, + StartPos: 5037, + EndPos: 5039, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 259, - EndLine: 259, - StartPos: 5043, - EndPos: 5052, - }, - Expr: &cast.Bool{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 259, EndLine: 259, StartPos: 5043, - EndPos: 5051, + EndPos: 5052, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastBool{ + Node: ast.Node{ Position: &position.Position{ StartLine: 259, EndLine: 259, - StartPos: 5049, + StartPos: 5043, EndPos: 5051, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 259, EndLine: 259, StartPos: 5049, EndPos: 5051, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 259, + EndLine: 259, + StartPos: 5049, + EndPos: 5051, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 5055, - EndPos: 5066, - }, - Expr: &cast.Double{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 260, EndLine: 260, StartPos: 5055, - EndPos: 5065, + EndPos: 5066, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastDouble{ + Node: ast.Node{ Position: &position.Position{ StartLine: 260, EndLine: 260, - StartPos: 5063, + StartPos: 5055, EndPos: 5065, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 260, EndLine: 260, StartPos: 5063, EndPos: 5065, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 260, + EndLine: 260, + StartPos: 5063, + EndPos: 5065, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 261, - EndLine: 261, - StartPos: 5069, - EndPos: 5079, - }, - Expr: &cast.Double{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 261, EndLine: 261, StartPos: 5069, - EndPos: 5078, + EndPos: 5079, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastDouble{ + Node: ast.Node{ Position: &position.Position{ StartLine: 261, EndLine: 261, - StartPos: 5076, + StartPos: 5069, EndPos: 5078, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 261, EndLine: 261, StartPos: 5076, EndPos: 5078, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 261, + EndLine: 261, + StartPos: 5076, + EndPos: 5078, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 262, - EndLine: 262, - StartPos: 5082, - EndPos: 5094, - }, - Expr: &cast.Int{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 262, EndLine: 262, StartPos: 5082, - EndPos: 5093, + EndPos: 5094, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastInt{ + Node: ast.Node{ Position: &position.Position{ StartLine: 262, EndLine: 262, - StartPos: 5091, + StartPos: 5082, EndPos: 5093, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 262, EndLine: 262, StartPos: 5091, EndPos: 5093, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 262, + EndLine: 262, + StartPos: 5091, + EndPos: 5093, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 263, - EndLine: 263, - StartPos: 5097, - EndPos: 5105, - }, - Expr: &cast.Int{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 263, EndLine: 263, StartPos: 5097, - EndPos: 5104, + EndPos: 5105, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastInt{ + Node: ast.Node{ Position: &position.Position{ StartLine: 263, EndLine: 263, - StartPos: 5102, + StartPos: 5097, EndPos: 5104, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 263, EndLine: 263, StartPos: 5102, EndPos: 5104, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 263, + EndLine: 263, + StartPos: 5102, + EndPos: 5104, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 264, - EndLine: 264, - StartPos: 5108, - EndPos: 5119, - }, - Expr: &cast.Object{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 264, EndLine: 264, StartPos: 5108, - EndPos: 5118, + EndPos: 5119, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastObject{ + Node: ast.Node{ Position: &position.Position{ StartLine: 264, EndLine: 264, - StartPos: 5116, + StartPos: 5108, EndPos: 5118, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 264, EndLine: 264, StartPos: 5116, EndPos: 5118, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 264, + EndLine: 264, + StartPos: 5116, + EndPos: 5118, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 265, - EndLine: 265, - StartPos: 5122, - EndPos: 5133, - }, - Expr: &cast.String{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 265, EndLine: 265, StartPos: 5122, - EndPos: 5132, + EndPos: 5133, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastString{ + Node: ast.Node{ Position: &position.Position{ StartLine: 265, EndLine: 265, - StartPos: 5130, + StartPos: 5122, EndPos: 5132, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 265, EndLine: 265, StartPos: 5130, EndPos: 5132, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 265, + EndLine: 265, + StartPos: 5130, + EndPos: 5132, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 266, - EndLine: 266, - StartPos: 5136, - EndPos: 5146, - }, - Expr: &cast.Unset{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 266, EndLine: 266, StartPos: 5136, - EndPos: 5145, + EndPos: 5146, }, - Expr: &expr.Variable{ + }, + Expr: &ast.ExprCastUnset{ + Node: ast.Node{ Position: &position.Position{ StartLine: 266, EndLine: 266, - StartPos: 5143, + StartPos: 5136, EndPos: 5145, }, - VarName: &node.Identifier{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 266, EndLine: 266, StartPos: 5143, EndPos: 5145, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 266, + EndLine: 266, + StartPos: 5143, + EndPos: 5145, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 5150, - EndPos: 5158, - }, - Expr: &binary.BitwiseAnd{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 268, EndLine: 268, StartPos: 5150, - EndPos: 5157, + EndPos: 5158, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryBitwiseAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 268, EndLine: 268, StartPos: 5150, - EndPos: 5152, + EndPos: 5157, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 268, EndLine: 268, StartPos: 5150, EndPos: 5152, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 268, + EndLine: 268, + StartPos: 5150, + EndPos: 5152, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 5155, - EndPos: 5157, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 268, EndLine: 268, StartPos: 5155, EndPos: 5157, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 268, + EndLine: 268, + StartPos: 5155, + EndPos: 5157, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 5161, - EndPos: 5169, - }, - Expr: &binary.BitwiseOr{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 269, EndLine: 269, StartPos: 5161, - EndPos: 5168, + EndPos: 5169, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryBitwiseOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 269, EndLine: 269, StartPos: 5161, - EndPos: 5163, + EndPos: 5168, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 269, EndLine: 269, StartPos: 5161, EndPos: 5163, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 269, + EndLine: 269, + StartPos: 5161, + EndPos: 5163, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 5166, - EndPos: 5168, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 269, EndLine: 269, StartPos: 5166, EndPos: 5168, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 269, + EndLine: 269, + StartPos: 5166, + EndPos: 5168, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 5172, - EndPos: 5180, - }, - Expr: &binary.BitwiseXor{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 270, EndLine: 270, StartPos: 5172, - EndPos: 5179, + EndPos: 5180, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryBitwiseXor{ + Node: ast.Node{ Position: &position.Position{ StartLine: 270, EndLine: 270, StartPos: 5172, - EndPos: 5174, + EndPos: 5179, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 270, EndLine: 270, StartPos: 5172, EndPos: 5174, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 270, + EndLine: 270, + StartPos: 5172, + EndPos: 5174, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 5177, - EndPos: 5179, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 270, EndLine: 270, StartPos: 5177, EndPos: 5179, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 270, + EndLine: 270, + StartPos: 5177, + EndPos: 5179, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 5183, - EndPos: 5192, - }, - Expr: &binary.BooleanAnd{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 271, EndLine: 271, StartPos: 5183, - EndPos: 5191, + EndPos: 5192, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryBooleanAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 271, EndLine: 271, StartPos: 5183, - EndPos: 5185, + EndPos: 5191, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 271, EndLine: 271, StartPos: 5183, EndPos: 5185, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 271, + EndLine: 271, + StartPos: 5183, + EndPos: 5185, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 5189, - EndPos: 5191, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 271, EndLine: 271, StartPos: 5189, EndPos: 5191, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 271, + EndLine: 271, + StartPos: 5189, + EndPos: 5191, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 5195, - EndPos: 5204, - }, - Expr: &binary.BooleanOr{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 272, EndLine: 272, StartPos: 5195, - EndPos: 5203, + EndPos: 5204, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryBooleanOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 272, EndLine: 272, StartPos: 5195, - EndPos: 5197, + EndPos: 5203, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 272, EndLine: 272, StartPos: 5195, EndPos: 5197, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 272, + EndLine: 272, + StartPos: 5195, + EndPos: 5197, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 5201, - EndPos: 5203, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 272, EndLine: 272, StartPos: 5201, EndPos: 5203, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 272, + EndLine: 272, + StartPos: 5201, + EndPos: 5203, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 273, - EndLine: 273, - StartPos: 5207, - EndPos: 5215, - }, - Expr: &binary.Concat{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 273, EndLine: 273, StartPos: 5207, - EndPos: 5214, + EndPos: 5215, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryConcat{ + Node: ast.Node{ Position: &position.Position{ StartLine: 273, EndLine: 273, StartPos: 5207, - EndPos: 5209, + EndPos: 5214, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 273, EndLine: 273, StartPos: 5207, EndPos: 5209, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 273, + EndLine: 273, + StartPos: 5207, + EndPos: 5209, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 273, - EndLine: 273, - StartPos: 5212, - EndPos: 5214, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 273, EndLine: 273, StartPos: 5212, EndPos: 5214, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 273, + EndLine: 273, + StartPos: 5212, + EndPos: 5214, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 5218, - EndPos: 5226, - }, - Expr: &binary.Div{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 274, EndLine: 274, StartPos: 5218, - EndPos: 5225, + EndPos: 5226, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryDiv{ + Node: ast.Node{ Position: &position.Position{ StartLine: 274, EndLine: 274, StartPos: 5218, - EndPos: 5220, + EndPos: 5225, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 274, EndLine: 274, StartPos: 5218, EndPos: 5220, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 274, + EndLine: 274, + StartPos: 5218, + EndPos: 5220, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 5223, - EndPos: 5225, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 274, EndLine: 274, StartPos: 5223, EndPos: 5225, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 274, + EndLine: 274, + StartPos: 5223, + EndPos: 5225, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 5229, - EndPos: 5238, - }, - Expr: &binary.Equal{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 275, EndLine: 275, StartPos: 5229, - EndPos: 5237, + EndPos: 5238, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 275, EndLine: 275, StartPos: 5229, - EndPos: 5231, + EndPos: 5237, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 275, EndLine: 275, StartPos: 5229, EndPos: 5231, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 275, + EndLine: 275, + StartPos: 5229, + EndPos: 5231, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 5235, - EndPos: 5237, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 275, EndLine: 275, StartPos: 5235, EndPos: 5237, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 275, + EndLine: 275, + StartPos: 5235, + EndPos: 5237, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 5241, - EndPos: 5250, - }, - Expr: &binary.GreaterOrEqual{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 276, EndLine: 276, StartPos: 5241, - EndPos: 5249, + EndPos: 5250, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryGreaterOrEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 276, EndLine: 276, StartPos: 5241, - EndPos: 5243, + EndPos: 5249, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 276, EndLine: 276, StartPos: 5241, EndPos: 5243, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 276, + EndLine: 276, + StartPos: 5241, + EndPos: 5243, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 5247, - EndPos: 5249, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 276, EndLine: 276, StartPos: 5247, EndPos: 5249, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 276, + EndLine: 276, + StartPos: 5247, + EndPos: 5249, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 5253, - EndPos: 5261, - }, - Expr: &binary.Greater{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 277, EndLine: 277, StartPos: 5253, - EndPos: 5260, + EndPos: 5261, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryGreater{ + Node: ast.Node{ Position: &position.Position{ StartLine: 277, EndLine: 277, StartPos: 5253, - EndPos: 5255, + EndPos: 5260, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 277, EndLine: 277, StartPos: 5253, EndPos: 5255, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 277, + EndLine: 277, + StartPos: 5253, + EndPos: 5255, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 5258, - EndPos: 5260, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 277, EndLine: 277, StartPos: 5258, EndPos: 5260, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 277, + EndLine: 277, + StartPos: 5258, + EndPos: 5260, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 5264, - EndPos: 5274, - }, - Expr: &binary.Identical{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 278, EndLine: 278, StartPos: 5264, - EndPos: 5273, + EndPos: 5274, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryIdentical{ + Node: ast.Node{ Position: &position.Position{ StartLine: 278, EndLine: 278, StartPos: 5264, - EndPos: 5266, + EndPos: 5273, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 278, EndLine: 278, StartPos: 5264, EndPos: 5266, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 278, + EndLine: 278, + StartPos: 5264, + EndPos: 5266, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 5271, - EndPos: 5273, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 278, EndLine: 278, StartPos: 5271, EndPos: 5273, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 278, + EndLine: 278, + StartPos: 5271, + EndPos: 5273, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 5277, - EndPos: 5287, - }, - Expr: &binary.LogicalAnd{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 279, EndLine: 279, StartPos: 5277, - EndPos: 5286, + EndPos: 5287, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryLogicalAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 279, EndLine: 279, StartPos: 5277, - EndPos: 5279, + EndPos: 5286, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 279, EndLine: 279, StartPos: 5277, EndPos: 5279, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 279, + EndLine: 279, + StartPos: 5277, + EndPos: 5279, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 5284, - EndPos: 5286, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 279, EndLine: 279, StartPos: 5284, EndPos: 5286, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 279, + EndLine: 279, + StartPos: 5284, + EndPos: 5286, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 5290, - EndPos: 5299, - }, - Expr: &binary.LogicalOr{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 280, EndLine: 280, StartPos: 5290, - EndPos: 5298, + EndPos: 5299, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryLogicalOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 280, EndLine: 280, StartPos: 5290, - EndPos: 5292, + EndPos: 5298, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 280, EndLine: 280, StartPos: 5290, EndPos: 5292, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 280, + EndLine: 280, + StartPos: 5290, + EndPos: 5292, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 5296, - EndPos: 5298, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 280, EndLine: 280, StartPos: 5296, EndPos: 5298, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 280, + EndLine: 280, + StartPos: 5296, + EndPos: 5298, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 5302, - EndPos: 5312, - }, - Expr: &binary.LogicalXor{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 281, EndLine: 281, StartPos: 5302, - EndPos: 5311, + EndPos: 5312, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryLogicalXor{ + Node: ast.Node{ Position: &position.Position{ StartLine: 281, EndLine: 281, StartPos: 5302, - EndPos: 5304, + EndPos: 5311, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 281, EndLine: 281, StartPos: 5302, EndPos: 5304, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 281, + EndLine: 281, + StartPos: 5302, + EndPos: 5304, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 5309, - EndPos: 5311, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 281, EndLine: 281, StartPos: 5309, EndPos: 5311, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 281, + EndLine: 281, + StartPos: 5309, + EndPos: 5311, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 5315, - EndPos: 5323, - }, - Expr: &binary.Minus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 282, EndLine: 282, StartPos: 5315, - EndPos: 5322, + EndPos: 5323, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryMinus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 282, EndLine: 282, StartPos: 5315, - EndPos: 5317, + EndPos: 5322, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 282, EndLine: 282, StartPos: 5315, EndPos: 5317, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 282, + EndLine: 282, + StartPos: 5315, + EndPos: 5317, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 5320, - EndPos: 5322, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 282, EndLine: 282, StartPos: 5320, EndPos: 5322, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 282, + EndLine: 282, + StartPos: 5320, + EndPos: 5322, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 5326, - EndPos: 5334, - }, - Expr: &binary.Mod{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 283, EndLine: 283, StartPos: 5326, - EndPos: 5333, + EndPos: 5334, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryMod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 283, EndLine: 283, StartPos: 5326, - EndPos: 5328, + EndPos: 5333, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 283, EndLine: 283, StartPos: 5326, EndPos: 5328, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 283, + EndLine: 283, + StartPos: 5326, + EndPos: 5328, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 5331, - EndPos: 5333, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 283, EndLine: 283, StartPos: 5331, EndPos: 5333, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 283, + EndLine: 283, + StartPos: 5331, + EndPos: 5333, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 5337, - EndPos: 5345, - }, - Expr: &binary.Mul{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 284, EndLine: 284, StartPos: 5337, - EndPos: 5344, + EndPos: 5345, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryMul{ + Node: ast.Node{ Position: &position.Position{ StartLine: 284, EndLine: 284, StartPos: 5337, - EndPos: 5339, + EndPos: 5344, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 284, EndLine: 284, StartPos: 5337, EndPos: 5339, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 284, + EndLine: 284, + StartPos: 5337, + EndPos: 5339, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 5342, - EndPos: 5344, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 284, EndLine: 284, StartPos: 5342, EndPos: 5344, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 284, + EndLine: 284, + StartPos: 5342, + EndPos: 5344, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 5348, - EndPos: 5357, - }, - Expr: &binary.NotEqual{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 285, EndLine: 285, StartPos: 5348, - EndPos: 5356, + EndPos: 5357, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryNotEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 285, EndLine: 285, StartPos: 5348, - EndPos: 5350, + EndPos: 5356, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 285, EndLine: 285, StartPos: 5348, EndPos: 5350, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 285, + EndLine: 285, + StartPos: 5348, + EndPos: 5350, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 5354, - EndPos: 5356, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 285, EndLine: 285, StartPos: 5354, EndPos: 5356, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 285, + EndLine: 285, + StartPos: 5354, + EndPos: 5356, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 5360, - EndPos: 5370, - }, - Expr: &binary.NotIdentical{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 286, EndLine: 286, StartPos: 5360, - EndPos: 5369, + EndPos: 5370, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryNotIdentical{ + Node: ast.Node{ Position: &position.Position{ StartLine: 286, EndLine: 286, StartPos: 5360, - EndPos: 5362, + EndPos: 5369, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 286, EndLine: 286, StartPos: 5360, EndPos: 5362, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 286, + EndLine: 286, + StartPos: 5360, + EndPos: 5362, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 5367, - EndPos: 5369, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 286, EndLine: 286, StartPos: 5367, EndPos: 5369, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 286, + EndLine: 286, + StartPos: 5367, + EndPos: 5369, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 5373, - EndPos: 5381, - }, - Expr: &binary.Plus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 287, EndLine: 287, StartPos: 5373, - EndPos: 5380, + EndPos: 5381, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryPlus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 287, EndLine: 287, StartPos: 5373, - EndPos: 5375, + EndPos: 5380, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 287, EndLine: 287, StartPos: 5373, EndPos: 5375, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 287, + EndLine: 287, + StartPos: 5373, + EndPos: 5375, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 5378, - EndPos: 5380, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 287, EndLine: 287, StartPos: 5378, EndPos: 5380, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 287, + EndLine: 287, + StartPos: 5378, + EndPos: 5380, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 5384, - EndPos: 5393, - }, - Expr: &binary.Pow{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 288, EndLine: 288, StartPos: 5384, - EndPos: 5392, + EndPos: 5393, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryPow{ + Node: ast.Node{ Position: &position.Position{ StartLine: 288, EndLine: 288, StartPos: 5384, - EndPos: 5386, + EndPos: 5392, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 288, EndLine: 288, StartPos: 5384, EndPos: 5386, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 288, + EndLine: 288, + StartPos: 5384, + EndPos: 5386, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 5390, - EndPos: 5392, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 288, EndLine: 288, StartPos: 5390, EndPos: 5392, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 288, + EndLine: 288, + StartPos: 5390, + EndPos: 5392, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 5396, - EndPos: 5405, - }, - Expr: &binary.ShiftLeft{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 289, EndLine: 289, StartPos: 5396, - EndPos: 5404, + EndPos: 5405, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryShiftLeft{ + Node: ast.Node{ Position: &position.Position{ StartLine: 289, EndLine: 289, StartPos: 5396, - EndPos: 5398, + EndPos: 5404, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 289, EndLine: 289, StartPos: 5396, EndPos: 5398, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 289, + EndLine: 289, + StartPos: 5396, + EndPos: 5398, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 5402, - EndPos: 5404, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 289, EndLine: 289, StartPos: 5402, EndPos: 5404, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 289, + EndLine: 289, + StartPos: 5402, + EndPos: 5404, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 5408, - EndPos: 5417, - }, - Expr: &binary.ShiftRight{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 290, EndLine: 290, StartPos: 5408, - EndPos: 5416, + EndPos: 5417, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinaryShiftRight{ + Node: ast.Node{ Position: &position.Position{ StartLine: 290, EndLine: 290, StartPos: 5408, - EndPos: 5410, + EndPos: 5416, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 290, EndLine: 290, StartPos: 5408, EndPos: 5410, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 290, + EndLine: 290, + StartPos: 5408, + EndPos: 5410, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 5414, - EndPos: 5416, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 290, EndLine: 290, StartPos: 5414, EndPos: 5416, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 290, + EndLine: 290, + StartPos: 5414, + EndPos: 5416, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 5420, - EndPos: 5429, - }, - Expr: &binary.SmallerOrEqual{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 291, EndLine: 291, StartPos: 5420, - EndPos: 5428, + EndPos: 5429, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinarySmallerOrEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 291, EndLine: 291, StartPos: 5420, - EndPos: 5422, + EndPos: 5428, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 291, EndLine: 291, StartPos: 5420, EndPos: 5422, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 291, + EndLine: 291, + StartPos: 5420, + EndPos: 5422, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 5426, - EndPos: 5428, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 291, EndLine: 291, StartPos: 5426, EndPos: 5428, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 291, + EndLine: 291, + StartPos: 5426, + EndPos: 5428, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 5432, - EndPos: 5440, - }, - Expr: &binary.Smaller{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 292, EndLine: 292, StartPos: 5432, - EndPos: 5439, + EndPos: 5440, }, - Left: &expr.Variable{ + }, + Expr: &ast.ExprBinarySmaller{ + Node: ast.Node{ Position: &position.Position{ StartLine: 292, EndLine: 292, StartPos: 5432, - EndPos: 5434, + EndPos: 5439, }, - VarName: &node.Identifier{ + }, + Left: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 292, EndLine: 292, StartPos: 5432, EndPos: 5434, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 292, + EndLine: 292, + StartPos: 5432, + EndPos: 5434, + }, + }, + Value: []byte("a"), }, }, - Right: &expr.Variable{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 5437, - EndPos: 5439, - }, - VarName: &node.Identifier{ + Right: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 292, EndLine: 292, StartPos: 5437, EndPos: 5439, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 292, + EndLine: 292, + StartPos: 5437, + EndPos: 5439, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 5444, - EndPos: 5453, - }, - Expr: &assign.Reference{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 294, EndLine: 294, StartPos: 5444, - EndPos: 5452, + EndPos: 5453, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 294, EndLine: 294, StartPos: 5444, - EndPos: 5446, + EndPos: 5452, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 294, EndLine: 294, StartPos: 5444, EndPos: 5446, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 294, + EndLine: 294, + StartPos: 5444, + EndPos: 5446, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 5450, - EndPos: 5452, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 294, EndLine: 294, StartPos: 5450, EndPos: 5452, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 294, + EndLine: 294, + StartPos: 5450, + EndPos: 5452, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 5456, - EndPos: 5470, - }, - Expr: &assign.Reference{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 295, EndLine: 295, StartPos: 5456, - EndPos: 5469, + EndPos: 5470, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 295, EndLine: 295, StartPos: 5456, - EndPos: 5458, + EndPos: 5469, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 295, EndLine: 295, StartPos: 5456, EndPos: 5458, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 295, + EndLine: 295, + StartPos: 5456, + EndPos: 5458, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.New{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 5462, - EndPos: 5469, - }, - Class: &name.Name{ + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 295, EndLine: 295, - StartPos: 5466, + StartPos: 5462, EndPos: 5469, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 5466, - EndPos: 5469, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 295, + EndLine: 295, + StartPos: 5466, + EndPos: 5469, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 295, + EndLine: 295, + StartPos: 5466, + EndPos: 5469, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 5473, - EndPos: 5491, - }, - Expr: &assign.Reference{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, StartPos: 5473, - EndPos: 5490, + EndPos: 5491, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignReference{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, StartPos: 5473, - EndPos: 5475, + EndPos: 5490, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, StartPos: 5473, EndPos: 5475, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 296, + EndLine: 296, + StartPos: 5473, + EndPos: 5475, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.New{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 5479, - EndPos: 5490, - }, - Class: &name.Name{ + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, - StartPos: 5483, - EndPos: 5486, + StartPos: 5479, + EndPos: 5490, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 5483, - EndPos: 5486, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 296, + EndLine: 296, + StartPos: 5483, + EndPos: 5486, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 296, + EndLine: 296, + StartPos: 5483, + EndPos: 5486, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 5486, - EndPos: 5490, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 296, + EndLine: 296, + StartPos: 5486, + EndPos: 5490, + }, }, - Arguments: []node.Node{ - &node.Argument{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 5487, - EndPos: 5489, - }, - IsReference: false, - Variadic: false, - Expr: &expr.Variable{ + Arguments: []ast.Vertex{ + &ast.Argument{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, StartPos: 5487, EndPos: 5489, }, - VarName: &node.Identifier{ + }, + IsReference: false, + Variadic: false, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 296, EndLine: 296, StartPos: 5487, EndPos: 5489, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 296, + EndLine: 296, + StartPos: 5487, + EndPos: 5489, + }, + }, + Value: []byte("b"), }, }, }, @@ -13928,765 +16942,885 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 5494, - EndPos: 5502, - }, - Expr: &assign.Assign{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 297, EndLine: 297, StartPos: 5494, - EndPos: 5501, + EndPos: 5502, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssign{ + Node: ast.Node{ Position: &position.Position{ StartLine: 297, EndLine: 297, StartPos: 5494, - EndPos: 5496, + EndPos: 5501, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 297, EndLine: 297, StartPos: 5494, EndPos: 5496, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 297, + EndLine: 297, + StartPos: 5494, + EndPos: 5496, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 5499, - EndPos: 5501, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 297, EndLine: 297, StartPos: 5499, EndPos: 5501, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 297, + EndLine: 297, + StartPos: 5499, + EndPos: 5501, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 5505, - EndPos: 5514, - }, - Expr: &assign.BitwiseAnd{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 298, EndLine: 298, StartPos: 5505, - EndPos: 5513, + EndPos: 5514, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignBitwiseAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 298, EndLine: 298, StartPos: 5505, - EndPos: 5507, + EndPos: 5513, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 298, EndLine: 298, StartPos: 5505, EndPos: 5507, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 298, + EndLine: 298, + StartPos: 5505, + EndPos: 5507, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 5511, - EndPos: 5513, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 298, EndLine: 298, StartPos: 5511, EndPos: 5513, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 298, + EndLine: 298, + StartPos: 5511, + EndPos: 5513, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5517, - EndPos: 5526, - }, - Expr: &assign.BitwiseOr{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 299, EndLine: 299, StartPos: 5517, - EndPos: 5525, + EndPos: 5526, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignBitwiseOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 299, EndLine: 299, StartPos: 5517, - EndPos: 5519, + EndPos: 5525, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 299, EndLine: 299, StartPos: 5517, EndPos: 5519, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 299, + EndLine: 299, + StartPos: 5517, + EndPos: 5519, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5523, - EndPos: 5525, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 299, EndLine: 299, StartPos: 5523, EndPos: 5525, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 299, + EndLine: 299, + StartPos: 5523, + EndPos: 5525, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5529, - EndPos: 5538, - }, - Expr: &assign.BitwiseXor{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 300, EndLine: 300, StartPos: 5529, - EndPos: 5537, + EndPos: 5538, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignBitwiseXor{ + Node: ast.Node{ Position: &position.Position{ StartLine: 300, EndLine: 300, StartPos: 5529, - EndPos: 5531, + EndPos: 5537, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 300, EndLine: 300, StartPos: 5529, EndPos: 5531, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 300, + EndLine: 300, + StartPos: 5529, + EndPos: 5531, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5535, - EndPos: 5537, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 300, EndLine: 300, StartPos: 5535, EndPos: 5537, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 300, + EndLine: 300, + StartPos: 5535, + EndPos: 5537, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 301, - EndLine: 301, - StartPos: 5541, - EndPos: 5550, - }, - Expr: &assign.Concat{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 301, EndLine: 301, StartPos: 5541, - EndPos: 5549, + EndPos: 5550, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignConcat{ + Node: ast.Node{ Position: &position.Position{ StartLine: 301, EndLine: 301, StartPos: 5541, - EndPos: 5543, + EndPos: 5549, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 301, EndLine: 301, StartPos: 5541, EndPos: 5543, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 301, + EndLine: 301, + StartPos: 5541, + EndPos: 5543, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 301, - EndLine: 301, - StartPos: 5547, - EndPos: 5549, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 301, EndLine: 301, StartPos: 5547, EndPos: 5549, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 301, + EndLine: 301, + StartPos: 5547, + EndPos: 5549, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5553, - EndPos: 5562, - }, - Expr: &assign.Div{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 302, EndLine: 302, StartPos: 5553, - EndPos: 5561, + EndPos: 5562, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignDiv{ + Node: ast.Node{ Position: &position.Position{ StartLine: 302, EndLine: 302, StartPos: 5553, - EndPos: 5555, + EndPos: 5561, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 302, EndLine: 302, StartPos: 5553, EndPos: 5555, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 302, + EndLine: 302, + StartPos: 5553, + EndPos: 5555, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5559, - EndPos: 5561, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 302, EndLine: 302, StartPos: 5559, EndPos: 5561, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 302, + EndLine: 302, + StartPos: 5559, + EndPos: 5561, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5565, - EndPos: 5574, - }, - Expr: &assign.Minus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 303, EndLine: 303, StartPos: 5565, - EndPos: 5573, + EndPos: 5574, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignMinus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 303, EndLine: 303, StartPos: 5565, - EndPos: 5567, + EndPos: 5573, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 303, EndLine: 303, StartPos: 5565, EndPos: 5567, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 303, + EndLine: 303, + StartPos: 5565, + EndPos: 5567, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5571, - EndPos: 5573, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 303, EndLine: 303, StartPos: 5571, EndPos: 5573, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 303, + EndLine: 303, + StartPos: 5571, + EndPos: 5573, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5577, - EndPos: 5586, - }, - Expr: &assign.Mod{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 304, EndLine: 304, StartPos: 5577, - EndPos: 5585, + EndPos: 5586, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignMod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 304, EndLine: 304, StartPos: 5577, - EndPos: 5579, + EndPos: 5585, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 304, EndLine: 304, StartPos: 5577, EndPos: 5579, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 304, + EndLine: 304, + StartPos: 5577, + EndPos: 5579, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5583, - EndPos: 5585, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 304, EndLine: 304, StartPos: 5583, EndPos: 5585, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 304, + EndLine: 304, + StartPos: 5583, + EndPos: 5585, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5589, - EndPos: 5598, - }, - Expr: &assign.Mul{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 305, EndLine: 305, StartPos: 5589, - EndPos: 5597, + EndPos: 5598, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignMul{ + Node: ast.Node{ Position: &position.Position{ StartLine: 305, EndLine: 305, StartPos: 5589, - EndPos: 5591, + EndPos: 5597, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 305, EndLine: 305, StartPos: 5589, EndPos: 5591, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 305, + EndLine: 305, + StartPos: 5589, + EndPos: 5591, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5595, - EndPos: 5597, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 305, EndLine: 305, StartPos: 5595, EndPos: 5597, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 305, + EndLine: 305, + StartPos: 5595, + EndPos: 5597, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5601, - EndPos: 5610, - }, - Expr: &assign.Plus{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 306, EndLine: 306, StartPos: 5601, - EndPos: 5609, + EndPos: 5610, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignPlus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 306, EndLine: 306, StartPos: 5601, - EndPos: 5603, + EndPos: 5609, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 306, EndLine: 306, StartPos: 5601, EndPos: 5603, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 306, + EndLine: 306, + StartPos: 5601, + EndPos: 5603, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5607, - EndPos: 5609, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 306, EndLine: 306, StartPos: 5607, EndPos: 5609, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 306, + EndLine: 306, + StartPos: 5607, + EndPos: 5609, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5613, - EndPos: 5623, - }, - Expr: &assign.Pow{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 307, EndLine: 307, StartPos: 5613, - EndPos: 5622, + EndPos: 5623, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignPow{ + Node: ast.Node{ Position: &position.Position{ StartLine: 307, EndLine: 307, StartPos: 5613, - EndPos: 5615, + EndPos: 5622, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 307, EndLine: 307, StartPos: 5613, EndPos: 5615, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 307, + EndLine: 307, + StartPos: 5613, + EndPos: 5615, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5620, - EndPos: 5622, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 307, EndLine: 307, StartPos: 5620, EndPos: 5622, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 307, + EndLine: 307, + StartPos: 5620, + EndPos: 5622, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5626, - EndPos: 5636, - }, - Expr: &assign.ShiftLeft{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 308, EndLine: 308, StartPos: 5626, - EndPos: 5635, + EndPos: 5636, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignShiftLeft{ + Node: ast.Node{ Position: &position.Position{ StartLine: 308, EndLine: 308, StartPos: 5626, - EndPos: 5628, + EndPos: 5635, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 308, EndLine: 308, StartPos: 5626, EndPos: 5628, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 308, + EndLine: 308, + StartPos: 5626, + EndPos: 5628, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5633, - EndPos: 5635, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 308, EndLine: 308, StartPos: 5633, EndPos: 5635, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 308, + EndLine: 308, + StartPos: 5633, + EndPos: 5635, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5639, - EndPos: 5649, - }, - Expr: &assign.ShiftRight{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 309, EndLine: 309, StartPos: 5639, - EndPos: 5648, + EndPos: 5649, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprAssignShiftRight{ + Node: ast.Node{ Position: &position.Position{ StartLine: 309, EndLine: 309, StartPos: 5639, - EndPos: 5641, + EndPos: 5648, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 309, EndLine: 309, StartPos: 5639, EndPos: 5641, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 309, + EndLine: 309, + StartPos: 5639, + EndPos: 5641, + }, + }, + Value: []byte("a"), }, }, - Expression: &expr.Variable{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5646, - EndPos: 5648, - }, - VarName: &node.Identifier{ + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 309, EndLine: 309, StartPos: 5646, EndPos: 5648, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 309, + EndLine: 309, + StartPos: 5646, + EndPos: 5648, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5655, - EndPos: 5667, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 312, EndLine: 312, StartPos: 5655, - EndPos: 5665, + EndPos: 5667, }, - Class: &name.FullyQualified{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 312, EndLine: 312, - StartPos: 5659, - EndPos: 5663, + StartPos: 5655, + EndPos: 5665, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5660, - EndPos: 5663, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 312, + EndLine: 312, + StartPos: 5659, + EndPos: 5663, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 312, + EndLine: 312, + StartPos: 5660, + EndPos: 5663, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5663, - EndPos: 5665, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 312, + EndLine: 312, + StartPos: 5663, + EndPos: 5665, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5691, - EndPos: 5695, - }, - Expr: &expr.PropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 313, EndLine: 313, StartPos: 5691, - EndPos: 5694, + EndPos: 5695, }, - Variable: &expr.MethodCall{ + }, + Expr: &ast.ExprPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 313, EndLine: 313, - StartPos: 5687, - EndPos: 5689, + StartPos: 5691, + EndPos: 5694, }, - Variable: &expr.New{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5671, - EndPos: 5681, - }, - Class: &name.FullyQualified{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5675, - EndPos: 5679, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5676, - EndPos: 5679, - }, - Value: "Foo", - }, - }, - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5679, - EndPos: 5681, - }, - }, - }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5684, - EndPos: 5687, - }, - Value: "bar", - }, - ArgumentList: &node.ArgumentList{ + }, + Var: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 313, EndLine: 313, @@ -14694,171 +17828,190 @@ func TestPhp5(t *testing.T) { EndPos: 5689, }, }, - }, - Property: &node.Identifier{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5691, - EndPos: 5694, + Var: &ast.ExprNew{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5671, + EndPos: 5681, + }, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5675, + EndPos: 5679, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5676, + EndPos: 5679, + }, + }, + Value: []byte("Foo"), + }, + }, + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5679, + EndPos: 5681, + }, + }, + }, }, - Value: "baz", + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5684, + EndPos: 5687, + }, + }, + Value: []byte("bar"), + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5687, + EndPos: 5689, + }, + }, + }, + }, + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 313, + EndLine: 313, + StartPos: 5691, + EndPos: 5694, + }, + }, + Value: []byte("baz"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5714, - EndPos: 5717, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 314, EndLine: 314, StartPos: 5714, - EndPos: 5715, + EndPos: 5717, }, - Variable: &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5711, - EndPos: 5712, - }, - Variable: &expr.New{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5699, - EndPos: 5709, - }, - Class: &name.FullyQualified{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5703, - EndPos: 5707, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5704, - EndPos: 5707, - }, - Value: "Foo", - }, - }, - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5707, - EndPos: 5709, - }, - }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5711, - EndPos: 5712, - }, - Value: "0", - }, - }, - Dim: &scalar.Lnumber{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 314, EndLine: 314, StartPos: 5714, EndPos: 5715, }, - Value: "0", + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5711, + EndPos: 5712, + }, + }, + Var: &ast.ExprNew{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5699, + EndPos: 5709, + }, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5703, + EndPos: 5707, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5704, + EndPos: 5707, + }, + }, + Value: []byte("Foo"), + }, + }, + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5707, + EndPos: 5709, + }, + }, + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5711, + EndPos: 5712, + }, + }, + Value: []byte("0"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 314, + EndLine: 314, + StartPos: 5714, + EndPos: 5715, + }, + }, + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5740, - EndPos: 5743, - }, - Expr: &expr.MethodCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 315, EndLine: 315, StartPos: 5740, - EndPos: 5742, + EndPos: 5743, }, - Variable: &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5733, - EndPos: 5734, - }, - Variable: &expr.New{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5721, - EndPos: 5731, - }, - Class: &name.FullyQualified{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5725, - EndPos: 5729, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5726, - EndPos: 5729, - }, - Value: "Foo", - }, - }, - }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5729, - EndPos: 5731, - }, - }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5733, - EndPos: 5734, - }, - Value: "0", - }, - }, - Method: &node.Identifier{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5737, - EndPos: 5740, - }, - Value: "bar", - }, - ArgumentList: &node.ArgumentList{ + }, + Expr: &ast.ExprMethodCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 315, EndLine: 315, @@ -14866,67 +18019,168 @@ func TestPhp5(t *testing.T) { EndPos: 5742, }, }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5733, + EndPos: 5734, + }, + }, + Var: &ast.ExprNew{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5721, + EndPos: 5731, + }, + }, + Class: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5725, + EndPos: 5729, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5726, + EndPos: 5729, + }, + }, + Value: []byte("Foo"), + }, + }, + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5729, + EndPos: 5731, + }, + }, + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5733, + EndPos: 5734, + }, + }, + Value: []byte("0"), + }, + }, + Method: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5737, + EndPos: 5740, + }, + }, + Value: []byte("bar"), + }, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 315, + EndLine: 315, + StartPos: 5740, + EndPos: 5742, + }, + }, + }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5747, - EndPos: 5764, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, StartPos: 5747, - EndPos: 5763, + EndPos: 5764, }, - Variable: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, StartPos: 5747, - EndPos: 5760, + EndPos: 5763, }, - Variable: &expr.Array{ + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, StartPos: 5747, - EndPos: 5757, + EndPos: 5760, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5753, - EndPos: 5756, - }, - Val: &expr.ShortArray{ + }, + Var: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 317, + EndLine: 317, + StartPos: 5747, + EndPos: 5757, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, StartPos: 5753, EndPos: 5756, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5754, - EndPos: 5755, - }, - Val: &scalar.Lnumber{ + }, + Val: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 317, + EndLine: 317, + StartPos: 5753, + EndPos: 5756, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, StartPos: 5754, EndPos: 5755, }, - Value: "0", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 317, + EndLine: 317, + StartPos: 5754, + EndPos: 5755, + }, + }, + Value: []byte("0"), }, }, }, @@ -14934,2702 +18188,3324 @@ func TestPhp5(t *testing.T) { }, }, }, - Dim: &scalar.Lnumber{ + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 317, + EndLine: 317, + StartPos: 5758, + EndPos: 5759, + }, + }, + Value: []byte("0"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 317, EndLine: 317, - StartPos: 5758, - EndPos: 5759, + StartPos: 5761, + EndPos: 5762, }, - Value: "0", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5761, - EndPos: 5762, - }, - Value: "0", + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5767, - EndPos: 5776, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 318, EndLine: 318, StartPos: 5767, - EndPos: 5775, + EndPos: 5776, }, - Variable: &scalar.String{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 318, EndLine: 318, StartPos: 5767, - EndPos: 5772, + EndPos: 5775, }, - Value: "\"foo\"", }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5773, - EndPos: 5774, + Var: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 318, + EndLine: 318, + StartPos: 5767, + EndPos: 5772, + }, }, - Value: "0", + Value: []byte("\"foo\""), + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 318, + EndLine: 318, + StartPos: 5773, + EndPos: 5774, + }, + }, + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 319, - EndLine: 319, - StartPos: 5779, - EndPos: 5786, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 319, EndLine: 319, StartPos: 5779, - EndPos: 5785, + EndPos: 5786, }, - Variable: &expr.ConstFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 319, EndLine: 319, StartPos: 5779, - EndPos: 5782, + EndPos: 5785, }, - Constant: &name.Name{ + }, + Var: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 319, EndLine: 319, StartPos: 5779, EndPos: 5782, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 319, - EndLine: 319, - StartPos: 5779, - EndPos: 5782, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 319, + EndLine: 319, + StartPos: 5779, + EndPos: 5782, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 319, + EndLine: 319, + StartPos: 5779, + EndPos: 5782, + }, }, - Value: "foo", + Value: []byte("foo"), }, }, }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 319, - EndLine: 319, - StartPos: 5783, - EndPos: 5784, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 319, + EndLine: 319, + StartPos: 5783, + EndPos: 5784, + }, }, - Value: "0", + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5789, - EndPos: 5801, - }, - Expr: &expr.ClassConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 320, EndLine: 320, StartPos: 5789, - EndPos: 5800, + EndPos: 5801, }, - Class: &node.Identifier{ + }, + Expr: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 320, EndLine: 320, StartPos: 5789, - EndPos: 5795, - }, - Value: "static", - }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5797, EndPos: 5800, }, - Value: "foo", + }, + Class: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 320, + EndLine: 320, + StartPos: 5789, + EndPos: 5795, + }, + }, + Value: []byte("static"), + }, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 320, + EndLine: 320, + StartPos: 5797, + EndPos: 5800, + }, + }, + Value: []byte("foo"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 322, - EndLine: 322, - StartPos: 5805, - EndPos: 5814, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 322, EndLine: 322, StartPos: 5805, - EndPos: 5813, + EndPos: 5814, }, - Class: &expr.Variable{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 322, EndLine: 322, - StartPos: 5809, + StartPos: 5805, EndPos: 5813, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 322, EndLine: 322, StartPos: 5809, EndPos: 5813, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 322, + EndLine: 322, + StartPos: 5809, + EndPos: 5813, + }, + }, + Value: []byte("foo"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 323, - EndLine: 323, - StartPos: 5817, - EndPos: 5832, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 323, EndLine: 323, StartPos: 5817, - EndPos: 5831, + EndPos: 5832, }, - Class: &expr.StaticPropertyFetch{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 323, EndLine: 323, - StartPos: 5821, + StartPos: 5817, EndPos: 5831, }, - Class: &expr.Variable{ + }, + Class: &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 323, EndLine: 323, StartPos: 5821, - EndPos: 5825, + EndPos: 5831, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 323, EndLine: 323, StartPos: 5821, EndPos: 5825, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 323, + EndLine: 323, + StartPos: 5821, + EndPos: 5825, + }, + }, + Value: []byte("foo"), }, }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 323, - EndLine: 323, - StartPos: 5827, - EndPos: 5831, - }, - VarName: &node.Identifier{ + Property: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 323, EndLine: 323, StartPos: 5827, EndPos: 5831, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 323, + EndLine: 323, + StartPos: 5827, + EndPos: 5831, + }, + }, + Value: []byte("bar"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5835, - EndPos: 5848, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 324, EndLine: 324, StartPos: 5835, - EndPos: 5846, + EndPos: 5848, }, - Class: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 324, EndLine: 324, - StartPos: 5845, + StartPos: 5835, EndPos: 5846, }, - Variable: &expr.PropertyFetch{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5843, - EndPos: 5846, - }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5839, - EndPos: 5844, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5839, - EndPos: 5841, - }, - Value: "a", - }, - }, - Property: &node.Identifier{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5843, - EndPos: 5844, - }, - Value: "b", - }, - }, - Dim: &scalar.Lnumber{ + }, + Class: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 324, EndLine: 324, StartPos: 5845, EndPos: 5846, }, - Value: "0", + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 324, + EndLine: 324, + StartPos: 5843, + EndPos: 5846, + }, + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 324, + EndLine: 324, + StartPos: 5839, + EndPos: 5844, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 324, + EndLine: 324, + StartPos: 5839, + EndPos: 5841, + }, + }, + Value: []byte("a"), + }, + }, + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 324, + EndLine: 324, + StartPos: 5843, + EndPos: 5844, + }, + }, + Value: []byte("b"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 324, + EndLine: 324, + StartPos: 5845, + EndPos: 5846, + }, + }, + Value: []byte("0"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5851, - EndPos: 5883, - }, - Expr: &expr.New{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5851, - EndPos: 5881, + EndPos: 5883, }, - Class: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprNew{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, - StartPos: 5880, + StartPos: 5851, EndPos: 5881, }, - Variable: &expr.PropertyFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5878, - EndPos: 5881, - }, - Variable: &expr.PropertyFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5874, - EndPos: 5879, - }, - Variable: &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5861, - EndPos: 5876, - }, - Variable: &expr.PropertyFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5859, - EndPos: 5871, - }, - Variable: &expr.Variable{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5855, - EndPos: 5860, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5855, - EndPos: 5857, - }, - Value: "a", - }, - }, - Property: &node.Identifier{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5859, - EndPos: 5860, - }, - Value: "b", - }, - }, - Dim: &expr.Ternary{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5861, - EndPos: 5871, - }, - Condition: &expr.Variable{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5861, - EndPos: 5863, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5861, - EndPos: 5863, - }, - Value: "b", - }, - }, - IfFalse: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5867, - EndPos: 5871, - }, - Constant: &name.Name{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5867, - EndPos: 5871, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5867, - EndPos: 5871, - }, - Value: "null", - }, - }, - }, - }, - }, - }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5874, - EndPos: 5876, - }, - VarName: &node.Identifier{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5874, - EndPos: 5876, - }, - Value: "c", - }, - }, - }, - Property: &node.Identifier{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5878, - EndPos: 5879, - }, - Value: "d", - }, - }, - Dim: &scalar.Lnumber{ + }, + Class: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5880, EndPos: 5881, }, - Value: "0", + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5878, + EndPos: 5881, + }, + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5874, + EndPos: 5879, + }, + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5861, + EndPos: 5876, + }, + }, + Var: &ast.ExprPropertyFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5859, + EndPos: 5871, + }, + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5855, + EndPos: 5860, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5855, + EndPos: 5857, + }, + }, + Value: []byte("a"), + }, + }, + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5859, + EndPos: 5860, + }, + }, + Value: []byte("b"), + }, + }, + Dim: &ast.ExprTernary{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5861, + EndPos: 5871, + }, + }, + Condition: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5861, + EndPos: 5863, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5861, + EndPos: 5863, + }, + }, + Value: []byte("b"), + }, + }, + IfFalse: &ast.ExprConstFetch{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5867, + EndPos: 5871, + }, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5867, + EndPos: 5871, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5867, + EndPos: 5871, + }, + }, + Value: []byte("null"), + }, + }, + }, + }, + }, + }, + Property: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5874, + EndPos: 5876, + }, + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5874, + EndPos: 5876, + }, + }, + Value: []byte("c"), + }, + }, + }, + Property: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5878, + EndPos: 5879, + }, + }, + Value: []byte("d"), + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5880, + EndPos: 5881, + }, + }, + Value: []byte("0"), }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5883, - EndPos: 5902, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5883, + EndPos: 5902, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5890, - EndPos: 5901, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5890, - EndPos: 5892, + EndPos: 5901, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5890, EndPos: 5892, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5890, + EndPos: 5892, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5895, - EndPos: 5901, - }, - Variable: &expr.ShortArray{ + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5895, - EndPos: 5898, + EndPos: 5901, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5896, - EndPos: 5897, - }, - Val: &scalar.Lnumber{ + }, + Var: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5895, + EndPos: 5898, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 325, EndLine: 325, StartPos: 5896, EndPos: 5897, }, - Value: "1", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5896, + EndPos: 5897, + }, + }, + Value: []byte("1"), }, }, }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5899, - EndPos: 5900, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 325, + EndLine: 325, + StartPos: 5899, + EndPos: 5900, + }, }, - Value: "0", + Value: []byte("0"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 327, - EndLine: 327, - StartPos: 5906, - EndPos: 5921, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 327, + EndLine: 327, + StartPos: 5906, + EndPos: 5921, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 327, - EndLine: 327, - StartPos: 5913, - EndPos: 5920, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 327, EndLine: 327, StartPos: 5913, - EndPos: 5915, + EndPos: 5920, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 327, EndLine: 327, StartPos: 5913, EndPos: 5915, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 327, + EndLine: 327, + StartPos: 5913, + EndPos: 5915, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.BooleanNot{ - Position: &position.Position{ - StartLine: 327, - EndLine: 327, - StartPos: 5918, - EndPos: 5920, - }, - Expr: &scalar.Lnumber{ + Expr: &ast.ExprBooleanNot{ + Node: ast.Node{ Position: &position.Position{ StartLine: 327, EndLine: 327, - StartPos: 5919, + StartPos: 5918, EndPos: 5920, }, - Value: "1", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 327, + EndLine: 327, + StartPos: 5919, + EndPos: 5920, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5924, - EndPos: 5939, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 328, + EndLine: 328, + StartPos: 5924, + EndPos: 5939, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5931, - EndPos: 5938, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 328, EndLine: 328, StartPos: 5931, - EndPos: 5933, + EndPos: 5938, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 328, EndLine: 328, StartPos: 5931, EndPos: 5933, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 328, + EndLine: 328, + StartPos: 5931, + EndPos: 5933, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.BitwiseNot{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5936, - EndPos: 5938, - }, - Expr: &scalar.Lnumber{ + Expr: &ast.ExprBitwiseNot{ + Node: ast.Node{ Position: &position.Position{ StartLine: 328, EndLine: 328, - StartPos: 5937, + StartPos: 5936, EndPos: 5938, }, - Value: "1", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 328, + EndLine: 328, + StartPos: 5937, + EndPos: 5938, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5942, - EndPos: 5957, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 329, + EndLine: 329, + StartPos: 5942, + EndPos: 5957, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5949, - EndPos: 5956, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 329, EndLine: 329, StartPos: 5949, - EndPos: 5951, + EndPos: 5956, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 329, EndLine: 329, StartPos: 5949, EndPos: 5951, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 329, + EndLine: 329, + StartPos: 5949, + EndPos: 5951, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.UnaryPlus{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5954, - EndPos: 5956, - }, - Expr: &scalar.Lnumber{ + Expr: &ast.ExprUnaryPlus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 329, EndLine: 329, - StartPos: 5955, + StartPos: 5954, EndPos: 5956, }, - Value: "1", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 329, + EndLine: 329, + StartPos: 5955, + EndPos: 5956, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5960, - EndPos: 5975, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 330, + EndLine: 330, + StartPos: 5960, + EndPos: 5975, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5967, - EndPos: 5974, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 330, EndLine: 330, StartPos: 5967, - EndPos: 5969, + EndPos: 5974, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 330, EndLine: 330, StartPos: 5967, EndPos: 5969, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 330, + EndLine: 330, + StartPos: 5967, + EndPos: 5969, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.UnaryMinus{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5972, - EndPos: 5974, - }, - Expr: &scalar.Lnumber{ + Expr: &ast.ExprUnaryMinus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 330, EndLine: 330, - StartPos: 5973, + StartPos: 5972, EndPos: 5974, }, - Value: "1", + }, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 330, + EndLine: 330, + StartPos: 5973, + EndPos: 5974, + }, + }, + Value: []byte("1"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 331, - EndLine: 331, - StartPos: 5978, - EndPos: 5994, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 331, + EndLine: 331, + StartPos: 5978, + EndPos: 5994, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 331, - EndLine: 331, - StartPos: 5985, - EndPos: 5992, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 331, EndLine: 331, StartPos: 5985, - EndPos: 5987, + EndPos: 5992, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 331, EndLine: 331, StartPos: 5985, EndPos: 5987, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 331, + EndLine: 331, + StartPos: 5985, + EndPos: 5987, + }, + }, + Value: []byte("a"), }, }, - Expr: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 331, - EndLine: 331, - StartPos: 5991, - EndPos: 5992, + Expr: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 331, + EndLine: 331, + StartPos: 5991, + EndPos: 5992, + }, }, - Value: "1", + Value: []byte("1"), }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5997, - EndPos: 6016, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 332, + EndLine: 332, + StartPos: 5997, + EndPos: 6016, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 6004, - EndPos: 6015, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 332, EndLine: 332, StartPos: 6004, - EndPos: 6006, + EndPos: 6015, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 332, EndLine: 332, StartPos: 6004, EndPos: 6006, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 332, + EndLine: 332, + StartPos: 6004, + EndPos: 6006, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.Ternary{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 6009, - EndPos: 6015, - }, - Condition: &scalar.Lnumber{ + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 332, EndLine: 332, StartPos: 6009, - EndPos: 6010, - }, - Value: "1", - }, - IfFalse: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 6014, EndPos: 6015, }, - Value: "2", + }, + Condition: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 332, + EndLine: 332, + StartPos: 6009, + EndPos: 6010, + }, + }, + Value: []byte("1"), + }, + IfFalse: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 332, + EndLine: 332, + StartPos: 6014, + EndPos: 6015, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 6019, - EndPos: 6041, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 333, + EndLine: 333, + StartPos: 6019, + EndPos: 6041, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 6026, - EndPos: 6040, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 333, EndLine: 333, StartPos: 6026, - EndPos: 6028, + EndPos: 6040, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 333, EndLine: 333, StartPos: 6026, EndPos: 6028, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 333, + EndLine: 333, + StartPos: 6026, + EndPos: 6028, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.Ternary{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 6031, - EndPos: 6040, - }, - Condition: &scalar.Lnumber{ + Expr: &ast.ExprTernary{ + Node: ast.Node{ Position: &position.Position{ StartLine: 333, EndLine: 333, StartPos: 6031, - EndPos: 6032, - }, - Value: "1", - }, - IfTrue: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 6035, - EndPos: 6036, - }, - Value: "2", - }, - IfFalse: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 6039, EndPos: 6040, }, - Value: "3", + }, + Condition: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 333, + EndLine: 333, + StartPos: 6031, + EndPos: 6032, + }, + }, + Value: []byte("1"), + }, + IfTrue: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 333, + EndLine: 333, + StartPos: 6035, + EndPos: 6036, + }, + }, + Value: []byte("2"), + }, + IfFalse: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 333, + EndLine: 333, + StartPos: 6039, + EndPos: 6040, + }, + }, + Value: []byte("3"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 6044, - EndPos: 6062, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 334, + EndLine: 334, + StartPos: 6044, + EndPos: 6062, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 6051, - EndPos: 6061, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 334, EndLine: 334, StartPos: 6051, - EndPos: 6053, + EndPos: 6061, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 334, EndLine: 334, StartPos: 6051, EndPos: 6053, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 334, + EndLine: 334, + StartPos: 6051, + EndPos: 6053, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.BitwiseAnd{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 6056, - EndPos: 6061, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryBitwiseAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 334, EndLine: 334, StartPos: 6056, - EndPos: 6057, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 6060, EndPos: 6061, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 334, + EndLine: 334, + StartPos: 6056, + EndPos: 6057, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 334, + EndLine: 334, + StartPos: 6060, + EndPos: 6061, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 6065, - EndPos: 6083, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 335, + EndLine: 335, + StartPos: 6065, + EndPos: 6083, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 6072, - EndPos: 6082, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 335, EndLine: 335, StartPos: 6072, - EndPos: 6074, + EndPos: 6082, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 335, EndLine: 335, StartPos: 6072, EndPos: 6074, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 335, + EndLine: 335, + StartPos: 6072, + EndPos: 6074, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.BitwiseOr{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 6077, - EndPos: 6082, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryBitwiseOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 335, EndLine: 335, StartPos: 6077, - EndPos: 6078, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 6081, EndPos: 6082, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 335, + EndLine: 335, + StartPos: 6077, + EndPos: 6078, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 335, + EndLine: 335, + StartPos: 6081, + EndPos: 6082, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 6086, - EndPos: 6104, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 336, + EndLine: 336, + StartPos: 6086, + EndPos: 6104, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 6093, - EndPos: 6103, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 336, EndLine: 336, StartPos: 6093, - EndPos: 6095, + EndPos: 6103, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 336, EndLine: 336, StartPos: 6093, EndPos: 6095, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 336, + EndLine: 336, + StartPos: 6093, + EndPos: 6095, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.BitwiseXor{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 6098, - EndPos: 6103, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryBitwiseXor{ + Node: ast.Node{ Position: &position.Position{ StartLine: 336, EndLine: 336, StartPos: 6098, - EndPos: 6099, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 6102, EndPos: 6103, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 336, + EndLine: 336, + StartPos: 6098, + EndPos: 6099, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 336, + EndLine: 336, + StartPos: 6102, + EndPos: 6103, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 6107, - EndPos: 6126, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 337, + EndLine: 337, + StartPos: 6107, + EndPos: 6126, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 6114, - EndPos: 6125, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 337, EndLine: 337, StartPos: 6114, - EndPos: 6116, + EndPos: 6125, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 337, EndLine: 337, StartPos: 6114, EndPos: 6116, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 337, + EndLine: 337, + StartPos: 6114, + EndPos: 6116, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.BooleanAnd{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 6119, - EndPos: 6125, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryBooleanAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 337, EndLine: 337, StartPos: 6119, - EndPos: 6120, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 6124, EndPos: 6125, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 337, + EndLine: 337, + StartPos: 6119, + EndPos: 6120, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 337, + EndLine: 337, + StartPos: 6124, + EndPos: 6125, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 6129, - EndPos: 6148, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 338, + EndLine: 338, + StartPos: 6129, + EndPos: 6148, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 6136, - EndPos: 6147, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 338, EndLine: 338, StartPos: 6136, - EndPos: 6138, + EndPos: 6147, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 338, EndLine: 338, StartPos: 6136, EndPos: 6138, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 338, + EndLine: 338, + StartPos: 6136, + EndPos: 6138, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.BooleanOr{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 6141, - EndPos: 6147, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryBooleanOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 338, EndLine: 338, StartPos: 6141, - EndPos: 6142, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 6146, EndPos: 6147, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 338, + EndLine: 338, + StartPos: 6141, + EndPos: 6142, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 338, + EndLine: 338, + StartPos: 6146, + EndPos: 6147, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 339, - EndLine: 339, - StartPos: 6151, - EndPos: 6169, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 339, + EndLine: 339, + StartPos: 6151, + EndPos: 6169, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 339, - EndLine: 339, - StartPos: 6158, - EndPos: 6168, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 339, EndLine: 339, StartPos: 6158, - EndPos: 6160, + EndPos: 6168, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 339, EndLine: 339, StartPos: 6158, EndPos: 6160, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 339, + EndLine: 339, + StartPos: 6158, + EndPos: 6160, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Concat{ - Position: &position.Position{ - StartLine: 339, - EndLine: 339, - StartPos: 6163, - EndPos: 6168, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryConcat{ + Node: ast.Node{ Position: &position.Position{ StartLine: 339, EndLine: 339, StartPos: 6163, - EndPos: 6164, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 339, - EndLine: 339, - StartPos: 6167, EndPos: 6168, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 339, + EndLine: 339, + StartPos: 6163, + EndPos: 6164, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 339, + EndLine: 339, + StartPos: 6167, + EndPos: 6168, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 6172, - EndPos: 6190, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 340, + EndLine: 340, + StartPos: 6172, + EndPos: 6190, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 6179, - EndPos: 6189, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 340, EndLine: 340, StartPos: 6179, - EndPos: 6181, + EndPos: 6189, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 340, EndLine: 340, StartPos: 6179, EndPos: 6181, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 340, + EndLine: 340, + StartPos: 6179, + EndPos: 6181, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Div{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 6184, - EndPos: 6189, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryDiv{ + Node: ast.Node{ Position: &position.Position{ StartLine: 340, EndLine: 340, StartPos: 6184, - EndPos: 6185, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 6188, EndPos: 6189, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 340, + EndLine: 340, + StartPos: 6184, + EndPos: 6185, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 340, + EndLine: 340, + StartPos: 6188, + EndPos: 6189, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 6193, - EndPos: 6212, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 341, + EndLine: 341, + StartPos: 6193, + EndPos: 6212, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 6200, - EndPos: 6211, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 341, EndLine: 341, StartPos: 6200, - EndPos: 6202, + EndPos: 6211, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 341, EndLine: 341, StartPos: 6200, EndPos: 6202, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 341, + EndLine: 341, + StartPos: 6200, + EndPos: 6202, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Equal{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 6205, - EndPos: 6211, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 341, EndLine: 341, StartPos: 6205, - EndPos: 6206, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 6210, EndPos: 6211, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 341, + EndLine: 341, + StartPos: 6205, + EndPos: 6206, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 341, + EndLine: 341, + StartPos: 6210, + EndPos: 6211, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 342, - EndLine: 342, - StartPos: 6215, - EndPos: 6234, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 342, + EndLine: 342, + StartPos: 6215, + EndPos: 6234, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 342, - EndLine: 342, - StartPos: 6222, - EndPos: 6233, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 342, EndLine: 342, StartPos: 6222, - EndPos: 6224, + EndPos: 6233, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 342, EndLine: 342, StartPos: 6222, EndPos: 6224, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 342, + EndLine: 342, + StartPos: 6222, + EndPos: 6224, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.GreaterOrEqual{ - Position: &position.Position{ - StartLine: 342, - EndLine: 342, - StartPos: 6227, - EndPos: 6233, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryGreaterOrEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 342, EndLine: 342, StartPos: 6227, - EndPos: 6228, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 342, - EndLine: 342, - StartPos: 6232, EndPos: 6233, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 342, + EndLine: 342, + StartPos: 6227, + EndPos: 6228, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 342, + EndLine: 342, + StartPos: 6232, + EndPos: 6233, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 6237, - EndPos: 6255, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 343, + EndLine: 343, + StartPos: 6237, + EndPos: 6255, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 6244, - EndPos: 6254, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 343, EndLine: 343, StartPos: 6244, - EndPos: 6246, + EndPos: 6254, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 343, EndLine: 343, StartPos: 6244, EndPos: 6246, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 343, + EndLine: 343, + StartPos: 6244, + EndPos: 6246, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Greater{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 6249, - EndPos: 6254, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryGreater{ + Node: ast.Node{ Position: &position.Position{ StartLine: 343, EndLine: 343, StartPos: 6249, - EndPos: 6250, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 6253, EndPos: 6254, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 343, + EndLine: 343, + StartPos: 6249, + EndPos: 6250, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 343, + EndLine: 343, + StartPos: 6253, + EndPos: 6254, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 6258, - EndPos: 6278, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 344, + EndLine: 344, + StartPos: 6258, + EndPos: 6278, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 6265, - EndPos: 6277, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 344, EndLine: 344, StartPos: 6265, - EndPos: 6267, + EndPos: 6277, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 344, EndLine: 344, StartPos: 6265, EndPos: 6267, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 344, + EndLine: 344, + StartPos: 6265, + EndPos: 6267, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Identical{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 6270, - EndPos: 6277, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryIdentical{ + Node: ast.Node{ Position: &position.Position{ StartLine: 344, EndLine: 344, StartPos: 6270, - EndPos: 6271, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 6276, EndPos: 6277, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 344, + EndLine: 344, + StartPos: 6270, + EndPos: 6271, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 344, + EndLine: 344, + StartPos: 6276, + EndPos: 6277, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 345, - EndLine: 345, - StartPos: 6281, - EndPos: 6301, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 345, + EndLine: 345, + StartPos: 6281, + EndPos: 6301, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 345, - EndLine: 345, - StartPos: 6288, - EndPos: 6300, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 345, EndLine: 345, StartPos: 6288, - EndPos: 6290, + EndPos: 6300, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 345, EndLine: 345, StartPos: 6288, EndPos: 6290, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 345, + EndLine: 345, + StartPos: 6288, + EndPos: 6290, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.LogicalAnd{ - Position: &position.Position{ - StartLine: 345, - EndLine: 345, - StartPos: 6293, - EndPos: 6300, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryLogicalAnd{ + Node: ast.Node{ Position: &position.Position{ StartLine: 345, EndLine: 345, StartPos: 6293, - EndPos: 6294, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 345, - EndLine: 345, - StartPos: 6299, EndPos: 6300, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 345, + EndLine: 345, + StartPos: 6293, + EndPos: 6294, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 345, + EndLine: 345, + StartPos: 6299, + EndPos: 6300, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 6304, - EndPos: 6323, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 346, + EndLine: 346, + StartPos: 6304, + EndPos: 6323, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 6311, - EndPos: 6322, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 346, EndLine: 346, StartPos: 6311, - EndPos: 6313, + EndPos: 6322, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 346, EndLine: 346, StartPos: 6311, EndPos: 6313, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 346, + EndLine: 346, + StartPos: 6311, + EndPos: 6313, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.LogicalOr{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 6316, - EndPos: 6322, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryLogicalOr{ + Node: ast.Node{ Position: &position.Position{ StartLine: 346, EndLine: 346, StartPos: 6316, - EndPos: 6317, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 6321, EndPos: 6322, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 346, + EndLine: 346, + StartPos: 6316, + EndPos: 6317, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 346, + EndLine: 346, + StartPos: 6321, + EndPos: 6322, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 347, - EndLine: 347, - StartPos: 6326, - EndPos: 6346, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 347, + EndLine: 347, + StartPos: 6326, + EndPos: 6346, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 347, - EndLine: 347, - StartPos: 6333, - EndPos: 6345, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 347, EndLine: 347, StartPos: 6333, - EndPos: 6335, + EndPos: 6345, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 347, EndLine: 347, StartPos: 6333, EndPos: 6335, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 347, + EndLine: 347, + StartPos: 6333, + EndPos: 6335, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.LogicalXor{ - Position: &position.Position{ - StartLine: 347, - EndLine: 347, - StartPos: 6338, - EndPos: 6345, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryLogicalXor{ + Node: ast.Node{ Position: &position.Position{ StartLine: 347, EndLine: 347, StartPos: 6338, - EndPos: 6339, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 347, - EndLine: 347, - StartPos: 6344, EndPos: 6345, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 347, + EndLine: 347, + StartPos: 6338, + EndPos: 6339, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 347, + EndLine: 347, + StartPos: 6344, + EndPos: 6345, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 348, - EndLine: 348, - StartPos: 6349, - EndPos: 6367, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 348, + EndLine: 348, + StartPos: 6349, + EndPos: 6367, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 348, - EndLine: 348, - StartPos: 6356, - EndPos: 6366, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 348, EndLine: 348, StartPos: 6356, - EndPos: 6358, + EndPos: 6366, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 348, EndLine: 348, StartPos: 6356, EndPos: 6358, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 348, + EndLine: 348, + StartPos: 6356, + EndPos: 6358, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Minus{ - Position: &position.Position{ - StartLine: 348, - EndLine: 348, - StartPos: 6361, - EndPos: 6366, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryMinus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 348, EndLine: 348, StartPos: 6361, - EndPos: 6362, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 348, - EndLine: 348, - StartPos: 6365, EndPos: 6366, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 348, + EndLine: 348, + StartPos: 6361, + EndPos: 6362, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 348, + EndLine: 348, + StartPos: 6365, + EndPos: 6366, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 349, - EndLine: 349, - StartPos: 6370, - EndPos: 6388, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 349, + EndLine: 349, + StartPos: 6370, + EndPos: 6388, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 349, - EndLine: 349, - StartPos: 6377, - EndPos: 6387, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 349, EndLine: 349, StartPos: 6377, - EndPos: 6379, + EndPos: 6387, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 349, EndLine: 349, StartPos: 6377, EndPos: 6379, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 349, + EndLine: 349, + StartPos: 6377, + EndPos: 6379, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Mod{ - Position: &position.Position{ - StartLine: 349, - EndLine: 349, - StartPos: 6382, - EndPos: 6387, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryMod{ + Node: ast.Node{ Position: &position.Position{ StartLine: 349, EndLine: 349, StartPos: 6382, - EndPos: 6383, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 349, - EndLine: 349, - StartPos: 6386, EndPos: 6387, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 349, + EndLine: 349, + StartPos: 6382, + EndPos: 6383, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 349, + EndLine: 349, + StartPos: 6386, + EndPos: 6387, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 350, - EndLine: 350, - StartPos: 6391, - EndPos: 6409, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 350, + EndLine: 350, + StartPos: 6391, + EndPos: 6409, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 350, - EndLine: 350, - StartPos: 6398, - EndPos: 6408, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 350, EndLine: 350, StartPos: 6398, - EndPos: 6400, + EndPos: 6408, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 350, EndLine: 350, StartPos: 6398, EndPos: 6400, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 350, + EndLine: 350, + StartPos: 6398, + EndPos: 6400, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Mul{ - Position: &position.Position{ - StartLine: 350, - EndLine: 350, - StartPos: 6403, - EndPos: 6408, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryMul{ + Node: ast.Node{ Position: &position.Position{ StartLine: 350, EndLine: 350, StartPos: 6403, - EndPos: 6404, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 350, - EndLine: 350, - StartPos: 6407, EndPos: 6408, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 350, + EndLine: 350, + StartPos: 6403, + EndPos: 6404, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 350, + EndLine: 350, + StartPos: 6407, + EndPos: 6408, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 351, - EndLine: 351, - StartPos: 6412, - EndPos: 6431, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 351, + EndLine: 351, + StartPos: 6412, + EndPos: 6431, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 351, - EndLine: 351, - StartPos: 6419, - EndPos: 6430, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 351, EndLine: 351, StartPos: 6419, - EndPos: 6421, + EndPos: 6430, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 351, EndLine: 351, StartPos: 6419, EndPos: 6421, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 351, + EndLine: 351, + StartPos: 6419, + EndPos: 6421, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.NotEqual{ - Position: &position.Position{ - StartLine: 351, - EndLine: 351, - StartPos: 6424, - EndPos: 6430, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryNotEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 351, EndLine: 351, StartPos: 6424, - EndPos: 6425, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 351, - EndLine: 351, - StartPos: 6429, EndPos: 6430, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 351, + EndLine: 351, + StartPos: 6424, + EndPos: 6425, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 351, + EndLine: 351, + StartPos: 6429, + EndPos: 6430, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 352, - EndLine: 352, - StartPos: 6434, - EndPos: 6454, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 352, + EndLine: 352, + StartPos: 6434, + EndPos: 6454, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 352, - EndLine: 352, - StartPos: 6441, - EndPos: 6453, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 352, EndLine: 352, StartPos: 6441, - EndPos: 6443, + EndPos: 6453, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 352, EndLine: 352, StartPos: 6441, EndPos: 6443, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 352, + EndLine: 352, + StartPos: 6441, + EndPos: 6443, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.NotIdentical{ - Position: &position.Position{ - StartLine: 352, - EndLine: 352, - StartPos: 6446, - EndPos: 6453, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryNotIdentical{ + Node: ast.Node{ Position: &position.Position{ StartLine: 352, EndLine: 352, StartPos: 6446, - EndPos: 6447, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 352, - EndLine: 352, - StartPos: 6452, EndPos: 6453, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 352, + EndLine: 352, + StartPos: 6446, + EndPos: 6447, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 352, + EndLine: 352, + StartPos: 6452, + EndPos: 6453, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 353, - EndLine: 353, - StartPos: 6457, - EndPos: 6475, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 353, + EndLine: 353, + StartPos: 6457, + EndPos: 6475, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 353, - EndLine: 353, - StartPos: 6464, - EndPos: 6474, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 353, EndLine: 353, StartPos: 6464, - EndPos: 6466, + EndPos: 6474, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 353, EndLine: 353, StartPos: 6464, EndPos: 6466, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 353, + EndLine: 353, + StartPos: 6464, + EndPos: 6466, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Plus{ - Position: &position.Position{ - StartLine: 353, - EndLine: 353, - StartPos: 6469, - EndPos: 6474, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryPlus{ + Node: ast.Node{ Position: &position.Position{ StartLine: 353, EndLine: 353, StartPos: 6469, - EndPos: 6470, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 353, - EndLine: 353, - StartPos: 6473, EndPos: 6474, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 353, + EndLine: 353, + StartPos: 6469, + EndPos: 6470, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 353, + EndLine: 353, + StartPos: 6473, + EndPos: 6474, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 354, - EndLine: 354, - StartPos: 6478, - EndPos: 6497, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 354, + EndLine: 354, + StartPos: 6478, + EndPos: 6497, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 354, - EndLine: 354, - StartPos: 6485, - EndPos: 6496, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 354, EndLine: 354, StartPos: 6485, - EndPos: 6487, + EndPos: 6496, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 354, EndLine: 354, StartPos: 6485, EndPos: 6487, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 354, + EndLine: 354, + StartPos: 6485, + EndPos: 6487, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Pow{ - Position: &position.Position{ - StartLine: 354, - EndLine: 354, - StartPos: 6490, - EndPos: 6496, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryPow{ + Node: ast.Node{ Position: &position.Position{ StartLine: 354, EndLine: 354, StartPos: 6490, - EndPos: 6491, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 354, - EndLine: 354, - StartPos: 6495, EndPos: 6496, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 354, + EndLine: 354, + StartPos: 6490, + EndPos: 6491, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 354, + EndLine: 354, + StartPos: 6495, + EndPos: 6496, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 355, - EndLine: 355, - StartPos: 6500, - EndPos: 6519, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 355, + EndLine: 355, + StartPos: 6500, + EndPos: 6519, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 355, - EndLine: 355, - StartPos: 6507, - EndPos: 6518, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 355, EndLine: 355, StartPos: 6507, - EndPos: 6509, + EndPos: 6518, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 355, EndLine: 355, StartPos: 6507, EndPos: 6509, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 355, + EndLine: 355, + StartPos: 6507, + EndPos: 6509, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.ShiftLeft{ - Position: &position.Position{ - StartLine: 355, - EndLine: 355, - StartPos: 6512, - EndPos: 6518, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryShiftLeft{ + Node: ast.Node{ Position: &position.Position{ StartLine: 355, EndLine: 355, StartPos: 6512, - EndPos: 6513, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 355, - EndLine: 355, - StartPos: 6517, EndPos: 6518, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 355, + EndLine: 355, + StartPos: 6512, + EndPos: 6513, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 355, + EndLine: 355, + StartPos: 6517, + EndPos: 6518, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 356, - EndLine: 356, - StartPos: 6522, - EndPos: 6541, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 356, + EndLine: 356, + StartPos: 6522, + EndPos: 6541, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 356, - EndLine: 356, - StartPos: 6529, - EndPos: 6540, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 356, EndLine: 356, StartPos: 6529, - EndPos: 6531, + EndPos: 6540, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 356, EndLine: 356, StartPos: 6529, EndPos: 6531, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 356, + EndLine: 356, + StartPos: 6529, + EndPos: 6531, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.ShiftRight{ - Position: &position.Position{ - StartLine: 356, - EndLine: 356, - StartPos: 6534, - EndPos: 6540, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinaryShiftRight{ + Node: ast.Node{ Position: &position.Position{ StartLine: 356, EndLine: 356, StartPos: 6534, - EndPos: 6535, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 356, - EndLine: 356, - StartPos: 6539, EndPos: 6540, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 356, + EndLine: 356, + StartPos: 6534, + EndPos: 6535, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 356, + EndLine: 356, + StartPos: 6539, + EndPos: 6540, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 357, - EndLine: 357, - StartPos: 6544, - EndPos: 6563, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 357, + EndLine: 357, + StartPos: 6544, + EndPos: 6563, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 357, - EndLine: 357, - StartPos: 6551, - EndPos: 6562, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 357, EndLine: 357, StartPos: 6551, - EndPos: 6553, + EndPos: 6562, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 357, EndLine: 357, StartPos: 6551, EndPos: 6553, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 357, + EndLine: 357, + StartPos: 6551, + EndPos: 6553, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.SmallerOrEqual{ - Position: &position.Position{ - StartLine: 357, - EndLine: 357, - StartPos: 6556, - EndPos: 6562, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinarySmallerOrEqual{ + Node: ast.Node{ Position: &position.Position{ StartLine: 357, EndLine: 357, StartPos: 6556, - EndPos: 6557, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 357, - EndLine: 357, - StartPos: 6561, EndPos: 6562, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 357, + EndLine: 357, + StartPos: 6556, + EndPos: 6557, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 357, + EndLine: 357, + StartPos: 6561, + EndPos: 6562, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 358, - EndLine: 358, - StartPos: 6566, - EndPos: 6584, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 358, + EndLine: 358, + StartPos: 6566, + EndPos: 6584, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 358, - EndLine: 358, - StartPos: 6573, - EndPos: 6583, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 358, EndLine: 358, StartPos: 6573, - EndPos: 6575, + EndPos: 6583, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 358, EndLine: 358, StartPos: 6573, EndPos: 6575, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 358, + EndLine: 358, + StartPos: 6573, + EndPos: 6575, + }, + }, + Value: []byte("a"), }, }, - Expr: &binary.Smaller{ - Position: &position.Position{ - StartLine: 358, - EndLine: 358, - StartPos: 6578, - EndPos: 6583, - }, - Left: &scalar.Lnumber{ + Expr: &ast.ExprBinarySmaller{ + Node: ast.Node{ Position: &position.Position{ StartLine: 358, EndLine: 358, StartPos: 6578, - EndPos: 6579, - }, - Value: "1", - }, - Right: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 358, - EndLine: 358, - StartPos: 6582, EndPos: 6583, }, - Value: "2", + }, + Left: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 358, + EndLine: 358, + StartPos: 6578, + EndPos: 6579, + }, + }, + Value: []byte("1"), + }, + Right: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 358, + EndLine: 358, + StartPos: 6582, + EndPos: 6583, + }, + }, + Value: []byte("2"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 359, - EndLine: 359, - StartPos: 6587, - EndPos: 6608, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 359, + EndLine: 359, + StartPos: 6587, + EndPos: 6608, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 359, - EndLine: 359, - StartPos: 6594, - EndPos: 6607, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 359, EndLine: 359, StartPos: 6594, - EndPos: 6596, + EndPos: 6607, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 359, EndLine: 359, StartPos: 6594, EndPos: 6596, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 359, + EndLine: 359, + StartPos: 6594, + EndPos: 6596, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ClassConstFetch{ - Position: &position.Position{ - StartLine: 359, - EndLine: 359, - StartPos: 6599, - EndPos: 6607, - }, - Class: &name.Name{ + Expr: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 359, EndLine: 359, StartPos: 6599, - EndPos: 6602, + EndPos: 6607, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 359, - EndLine: 359, - StartPos: 6599, - EndPos: 6602, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 359, + EndLine: 359, + StartPos: 6599, + EndPos: 6602, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 359, + EndLine: 359, + StartPos: 6599, + EndPos: 6602, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 359, - EndLine: 359, - StartPos: 6604, - EndPos: 6607, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 359, + EndLine: 359, + StartPos: 6604, + EndPos: 6607, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 360, - EndLine: 360, - StartPos: 6611, - EndPos: 6634, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 360, + EndLine: 360, + StartPos: 6611, + EndPos: 6634, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 360, - EndLine: 360, - StartPos: 6618, - EndPos: 6633, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 360, EndLine: 360, StartPos: 6618, - EndPos: 6620, + EndPos: 6633, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 360, EndLine: 360, StartPos: 6618, EndPos: 6620, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 360, + EndLine: 360, + StartPos: 6618, + EndPos: 6620, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ClassConstFetch{ - Position: &position.Position{ - StartLine: 360, - EndLine: 360, - StartPos: 6623, - EndPos: 6633, - }, - Class: &name.Name{ + Expr: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 360, EndLine: 360, StartPos: 6623, - EndPos: 6626, + EndPos: 6633, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 360, - EndLine: 360, - StartPos: 6623, - EndPos: 6626, + }, + Class: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 360, + EndLine: 360, + StartPos: 6623, + EndPos: 6626, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 360, + EndLine: 360, + StartPos: 6623, + EndPos: 6626, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 360, - EndLine: 360, - StartPos: 6628, - EndPos: 6633, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 360, + EndLine: 360, + StartPos: 6628, + EndPos: 6633, + }, }, - Value: "class", + Value: []byte("class"), }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 361, - EndLine: 361, - StartPos: 6637, - EndPos: 6659, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 361, + EndLine: 361, + StartPos: 6637, + EndPos: 6659, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 361, - EndLine: 361, - StartPos: 6644, - EndPos: 6658, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 361, EndLine: 361, StartPos: 6644, - EndPos: 6646, + EndPos: 6658, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 361, EndLine: 361, StartPos: 6644, EndPos: 6646, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 361, + EndLine: 361, + StartPos: 6644, + EndPos: 6646, + }, + }, + Value: []byte("a"), }, }, - Expr: &scalar.MagicConstant{ - Position: &position.Position{ - StartLine: 361, - EndLine: 361, - StartPos: 6649, - EndPos: 6658, + Expr: &ast.ScalarMagicConstant{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 361, + EndLine: 361, + StartPos: 6649, + EndPos: 6658, + }, }, - Value: "__CLASS__", + Value: []byte("__CLASS__"), }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 362, - EndLine: 362, - StartPos: 6662, - EndPos: 6678, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 362, + EndLine: 362, + StartPos: 6662, + EndPos: 6678, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 362, - EndLine: 362, - StartPos: 6669, - EndPos: 6677, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 362, EndLine: 362, StartPos: 6669, - EndPos: 6671, + EndPos: 6677, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 362, EndLine: 362, StartPos: 6669, EndPos: 6671, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 362, + EndLine: 362, + StartPos: 6669, + EndPos: 6671, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 362, - EndLine: 362, - StartPos: 6674, - EndPos: 6677, - }, - Constant: &name.Name{ + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 362, EndLine: 362, StartPos: 6674, EndPos: 6677, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 362, - EndLine: 362, - StartPos: 6674, - EndPos: 6677, + }, + Const: &ast.NameName{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 362, + EndLine: 362, + StartPos: 6674, + EndPos: 6677, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 362, + EndLine: 362, + StartPos: 6674, + EndPos: 6677, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, @@ -17637,61 +21513,75 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 363, - EndLine: 363, - StartPos: 6681, - EndPos: 6707, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 363, + EndLine: 363, + StartPos: 6681, + EndPos: 6707, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 363, - EndLine: 363, - StartPos: 6688, - EndPos: 6706, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 363, EndLine: 363, StartPos: 6688, - EndPos: 6690, + EndPos: 6706, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 363, EndLine: 363, StartPos: 6688, EndPos: 6690, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 363, + EndLine: 363, + StartPos: 6688, + EndPos: 6690, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 363, - EndLine: 363, - StartPos: 6693, - EndPos: 6706, - }, - Constant: &name.Relative{ + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 363, EndLine: 363, StartPos: 6693, EndPos: 6706, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 363, - EndLine: 363, - StartPos: 6703, - EndPos: 6706, + }, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 363, + EndLine: 363, + StartPos: 6693, + EndPos: 6706, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 363, + EndLine: 363, + StartPos: 6703, + EndPos: 6706, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, @@ -17699,61 +21589,75 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 364, - EndLine: 364, - StartPos: 6710, - EndPos: 6727, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 364, + EndLine: 364, + StartPos: 6710, + EndPos: 6727, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 364, - EndLine: 364, - StartPos: 6717, - EndPos: 6726, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 364, EndLine: 364, StartPos: 6717, - EndPos: 6719, + EndPos: 6726, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 364, EndLine: 364, StartPos: 6717, EndPos: 6719, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 364, + EndLine: 364, + StartPos: 6717, + EndPos: 6719, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ConstFetch{ - Position: &position.Position{ - StartLine: 364, - EndLine: 364, - StartPos: 6722, - EndPos: 6726, - }, - Constant: &name.FullyQualified{ + Expr: &ast.ExprConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 364, EndLine: 364, StartPos: 6722, EndPos: 6726, }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 364, - EndLine: 364, - StartPos: 6723, - EndPos: 6726, + }, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 364, + EndLine: 364, + StartPos: 6722, + EndPos: 6726, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 364, + EndLine: 364, + StartPos: 6723, + EndPos: 6726, + }, }, - Value: "Foo", + Value: []byte("Foo"), }, }, }, @@ -17761,130 +21665,160 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 365, - EndLine: 365, - StartPos: 6730, - EndPos: 6750, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 365, + EndLine: 365, + StartPos: 6730, + EndPos: 6750, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 365, - EndLine: 365, - StartPos: 6737, - EndPos: 6749, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 365, EndLine: 365, StartPos: 6737, - EndPos: 6739, + EndPos: 6749, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 365, EndLine: 365, StartPos: 6737, EndPos: 6739, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 365, + EndLine: 365, + StartPos: 6737, + EndPos: 6739, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.Array{ - Position: &position.Position{ - StartLine: 365, - EndLine: 365, - StartPos: 6742, - EndPos: 6749, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 365, + EndLine: 365, + StartPos: 6742, + EndPos: 6749, + }, }, }, }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 366, - EndLine: 366, - StartPos: 6753, - EndPos: 6782, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 366, + EndLine: 366, + StartPos: 6753, + EndPos: 6782, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 366, - EndLine: 366, - StartPos: 6760, - EndPos: 6781, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 366, EndLine: 366, StartPos: 6760, - EndPos: 6762, + EndPos: 6781, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 366, EndLine: 366, StartPos: 6760, EndPos: 6762, }, - Value: "a", }, - }, - Expr: &expr.Array{ - Position: &position.Position{ - StartLine: 366, - EndLine: 366, - StartPos: 6765, - EndPos: 6781, - }, - Items: []node.Node{ - &expr.ArrayItem{ + VarName: &ast.Identifier{ + Node: ast.Node{ Position: &position.Position{ StartLine: 366, EndLine: 366, - StartPos: 6771, - EndPos: 6777, + StartPos: 6760, + EndPos: 6762, }, - Key: &scalar.Lnumber{ + }, + Value: []byte("a"), + }, + }, + Expr: &ast.ExprArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 366, + EndLine: 366, + StartPos: 6765, + EndPos: 6781, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 366, EndLine: 366, StartPos: 6771, - EndPos: 6772, - }, - Value: "1", - }, - Val: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 366, - EndLine: 366, - StartPos: 6776, EndPos: 6777, }, - Value: "1", + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 366, + EndLine: 366, + StartPos: 6771, + EndPos: 6772, + }, + }, + Value: []byte("1"), + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 366, + EndLine: 366, + StartPos: 6776, + EndPos: 6777, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 366, - EndLine: 366, - StartPos: 6779, - EndPos: 6780, - }, - Val: &scalar.Lnumber{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 366, EndLine: 366, StartPos: 6779, EndPos: 6780, }, - Value: "2", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 366, + EndLine: 366, + StartPos: 6779, + EndPos: 6780, + }, + }, + Value: []byte("2"), }, }, }, @@ -17892,510 +21826,630 @@ func TestPhp5(t *testing.T) { }, }, }, - &stmt.Static{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6785, - EndPos: 6812, + &ast.StmtStatic{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6785, + EndPos: 6812, + }, }, - Vars: []node.Node{ - &stmt.StaticVar{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6792, - EndPos: 6811, - }, - Variable: &expr.Variable{ + Vars: []ast.Vertex{ + &ast.StmtStaticVar{ + Node: ast.Node{ Position: &position.Position{ StartLine: 367, EndLine: 367, StartPos: 6792, - EndPos: 6794, + EndPos: 6811, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 367, EndLine: 367, StartPos: 6792, EndPos: 6794, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6792, + EndPos: 6794, + }, + }, + Value: []byte("a"), }, }, - Expr: &expr.ArrayDimFetch{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6797, - EndPos: 6811, - }, - Variable: &expr.ShortArray{ + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 367, EndLine: 367, StartPos: 6797, - EndPos: 6808, + EndPos: 6811, }, - Items: []node.Node{ - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6798, - EndPos: 6799, - }, - Val: &scalar.Lnumber{ + }, + Var: &ast.ExprShortArray{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6797, + EndPos: 6808, + }, + }, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 367, EndLine: 367, StartPos: 6798, EndPos: 6799, }, - Value: "1", + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6798, + EndPos: 6799, + }, + }, + Value: []byte("1"), }, }, - &expr.ArrayItem{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6801, - EndPos: 6807, - }, - Key: &scalar.Lnumber{ + &ast.ExprArrayItem{ + Node: ast.Node{ Position: &position.Position{ StartLine: 367, EndLine: 367, StartPos: 6801, - EndPos: 6802, - }, - Value: "2", - }, - Val: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6806, EndPos: 6807, }, - Value: "2", + }, + Key: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6801, + EndPos: 6802, + }, + }, + Value: []byte("2"), + }, + Val: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6806, + EndPos: 6807, + }, + }, + Value: []byte("2"), }, }, }, }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 367, - EndLine: 367, - StartPos: 6809, - EndPos: 6810, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 367, + EndLine: 367, + StartPos: 6809, + EndPos: 6810, + }, }, - Value: "0", + Value: []byte("0"), }, }, }, }, }, - &stmt.If{ - Position: &position.Position{ - StartLine: 369, - EndLine: 369, - StartPos: 6816, - EndPos: 6831, - }, - Cond: &expr.Yield{ + &ast.StmtIf{ + Node: ast.Node{ Position: &position.Position{ StartLine: 369, EndLine: 369, - StartPos: 6820, - EndPos: 6827, + StartPos: 6816, + EndPos: 6831, }, - Value: &scalar.Lnumber{ + }, + Cond: &ast.ExprYield{ + Node: ast.Node{ Position: &position.Position{ StartLine: 369, EndLine: 369, - StartPos: 6826, + StartPos: 6820, EndPos: 6827, }, - Value: "1", + }, + Value: &ast.ScalarLnumber{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 369, + EndLine: 369, + StartPos: 6826, + EndPos: 6827, + }, + }, + Value: []byte("1"), }, }, - Stmt: &stmt.StmtList{ - Position: &position.Position{ - StartLine: 369, - EndLine: 369, - StartPos: 6829, - EndPos: 6831, + Stmt: &ast.StmtStmtList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 369, + EndLine: 369, + StartPos: 6829, + EndPos: 6831, + }, }, - Stmts: []node.Node{}, + Stmts: []ast.Vertex{}, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 370, - EndLine: 370, - StartPos: 6834, - EndPos: 6845, - }, - Expr: &expr.StaticPropertyFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 370, EndLine: 370, StartPos: 6834, - EndPos: 6844, + EndPos: 6845, }, - Class: &name.Name{ + }, + Expr: &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 370, EndLine: 370, StartPos: 6834, - EndPos: 6837, - }, - Parts: []node.Node{ - &name.NamePart{ - Position: &position.Position{ - StartLine: 370, - EndLine: 370, - StartPos: 6834, - EndPos: 6837, - }, - Value: "Foo", - }, - }, - }, - Property: &expr.Variable{ - Position: &position.Position{ - StartLine: 370, - EndLine: 370, - StartPos: 6839, EndPos: 6844, }, - VarName: &expr.Variable{ + }, + Class: &ast.NameName{ + Node: ast.Node{ Position: &position.Position{ StartLine: 370, EndLine: 370, - StartPos: 6840, + StartPos: 6834, + EndPos: 6837, + }, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 370, + EndLine: 370, + StartPos: 6834, + EndPos: 6837, + }, + }, + Value: []byte("Foo"), + }, + }, + }, + Property: &ast.ExprVariable{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 370, + EndLine: 370, + StartPos: 6839, EndPos: 6844, }, - VarName: &node.Identifier{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 370, EndLine: 370, StartPos: 6840, EndPos: 6844, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 370, + EndLine: 370, + StartPos: 6840, + EndPos: 6844, + }, + }, + Value: []byte("bar"), }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 372, - EndLine: 372, - StartPos: 6849, - EndPos: 6856, - }, - Expr: &expr.FunctionCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 372, EndLine: 372, StartPos: 6849, - EndPos: 6855, + EndPos: 6856, }, - Function: &expr.Variable{ + }, + Expr: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 372, EndLine: 372, StartPos: 6849, - EndPos: 6853, + EndPos: 6855, }, - VarName: &node.Identifier{ + }, + Function: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 372, EndLine: 372, StartPos: 6849, EndPos: 6853, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 372, + EndLine: 372, + StartPos: 6849, + EndPos: 6853, + }, + }, + Value: []byte("foo"), }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 372, - EndLine: 372, - StartPos: 6853, - EndPos: 6855, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 372, + EndLine: 372, + StartPos: 6853, + EndPos: 6855, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 373, - EndLine: 373, - StartPos: 6859, - EndPos: 6872, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, StartPos: 6859, - EndPos: 6871, + EndPos: 6872, }, - Variable: &expr.ArrayDimFetch{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, StartPos: 6859, - EndPos: 6868, + EndPos: 6871, }, - Variable: &expr.FunctionCall{ + }, + Var: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, StartPos: 6859, - EndPos: 6865, + EndPos: 6868, }, - Function: &expr.Variable{ + }, + Var: &ast.ExprFunctionCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, StartPos: 6859, - EndPos: 6863, + EndPos: 6865, }, - VarName: &node.Identifier{ + }, + Function: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, StartPos: 6859, EndPos: 6863, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 373, + EndLine: 373, + StartPos: 6859, + EndPos: 6863, + }, + }, + Value: []byte("foo"), }, }, - ArgumentList: &node.ArgumentList{ + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 373, + EndLine: 373, + StartPos: 6863, + EndPos: 6865, + }, + }, + }, + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, - StartPos: 6863, - EndPos: 6865, + StartPos: 6866, + EndPos: 6867, }, }, + Value: []byte("0"), }, - Dim: &scalar.Lnumber{ + }, + Dim: &ast.ScalarLnumber{ + Node: ast.Node{ Position: &position.Position{ StartLine: 373, EndLine: 373, - StartPos: 6866, - EndPos: 6867, + StartPos: 6869, + EndPos: 6870, }, - Value: "0", }, - }, - Dim: &scalar.Lnumber{ - Position: &position.Position{ - StartLine: 373, - EndLine: 373, - StartPos: 6869, - EndPos: 6870, - }, - Value: "0", + Value: []byte("0"), }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 374, - EndLine: 374, - StartPos: 6875, - EndPos: 6882, - }, - Expr: &expr.ArrayDimFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 374, EndLine: 374, StartPos: 6875, - EndPos: 6881, + EndPos: 6882, }, - Variable: &expr.Variable{ + }, + Expr: &ast.ExprArrayDimFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 374, EndLine: 374, StartPos: 6875, - EndPos: 6877, + EndPos: 6881, }, - VarName: &node.Identifier{ + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 374, EndLine: 374, StartPos: 6875, EndPos: 6877, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 374, + EndLine: 374, + StartPos: 6875, + EndPos: 6877, + }, + }, + Value: []byte("a"), }, }, - Dim: &expr.Variable{ - Position: &position.Position{ - StartLine: 374, - EndLine: 374, - StartPos: 6878, - EndPos: 6880, - }, - VarName: &node.Identifier{ + Dim: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 374, EndLine: 374, StartPos: 6878, EndPos: 6880, }, - Value: "b", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 374, + EndLine: 374, + StartPos: 6878, + EndPos: 6880, + }, + }, + Value: []byte("b"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 375, - EndLine: 375, - StartPos: 6885, - EndPos: 6891, - }, - Expr: &expr.Variable{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 375, EndLine: 375, StartPos: 6885, - EndPos: 6890, + EndPos: 6891, }, - VarName: &expr.Variable{ + }, + Expr: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 375, EndLine: 375, - StartPos: 6887, - EndPos: 6889, + StartPos: 6885, + EndPos: 6890, }, - VarName: &node.Identifier{ + }, + VarName: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 375, EndLine: 375, StartPos: 6887, EndPos: 6889, }, - Value: "a", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 375, + EndLine: 375, + StartPos: 6887, + EndPos: 6889, + }, + }, + Value: []byte("a"), }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 376, - EndLine: 376, - StartPos: 6894, - EndPos: 6909, - }, - Expr: &expr.StaticCall{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 376, EndLine: 376, StartPos: 6894, - EndPos: 6908, + EndPos: 6909, }, - Class: &expr.Variable{ + }, + Expr: &ast.ExprStaticCall{ + Node: ast.Node{ Position: &position.Position{ StartLine: 376, EndLine: 376, StartPos: 6894, - EndPos: 6898, + EndPos: 6908, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 376, EndLine: 376, StartPos: 6894, EndPos: 6898, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 376, + EndLine: 376, + StartPos: 6894, + EndPos: 6898, + }, + }, + Value: []byte("foo"), }, }, - Call: &expr.Variable{ - Position: &position.Position{ - StartLine: 376, - EndLine: 376, - StartPos: 6900, - EndPos: 6906, - }, - VarName: &node.Identifier{ + Call: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 376, EndLine: 376, - StartPos: 6901, - EndPos: 6905, + StartPos: 6900, + EndPos: 6906, }, - Value: "bar", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 376, + EndLine: 376, + StartPos: 6901, + EndPos: 6905, + }, + }, + Value: []byte("bar"), }, }, - ArgumentList: &node.ArgumentList{ - Position: &position.Position{ - StartLine: 376, - EndLine: 376, - StartPos: 6906, - EndPos: 6908, + ArgumentList: &ast.ArgumentList{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 376, + EndLine: 376, + StartPos: 6906, + EndPos: 6908, + }, }, }, }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 377, - EndLine: 377, - StartPos: 6912, - EndPos: 6922, - }, - Expr: &expr.ClassConstFetch{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 377, EndLine: 377, StartPos: 6912, - EndPos: 6921, + EndPos: 6922, }, - Class: &expr.Variable{ + }, + Expr: &ast.ExprClassConstFetch{ + Node: ast.Node{ Position: &position.Position{ StartLine: 377, EndLine: 377, StartPos: 6912, - EndPos: 6916, + EndPos: 6921, }, - VarName: &node.Identifier{ + }, + Class: &ast.ExprVariable{ + Node: ast.Node{ Position: &position.Position{ StartLine: 377, EndLine: 377, StartPos: 6912, EndPos: 6916, }, - Value: "foo", + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 377, + EndLine: 377, + StartPos: 6912, + EndPos: 6916, + }, + }, + Value: []byte("foo"), }, }, - ConstantName: &node.Identifier{ - Position: &position.Position{ - StartLine: 377, - EndLine: 377, - StartPos: 6918, - EndPos: 6921, + ConstantName: &ast.Identifier{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 377, + EndLine: 377, + StartPos: 6918, + EndPos: 6921, + }, }, - Value: "bar", + Value: []byte("bar"), }, }, }, - &stmt.HaltCompiler{ - Position: &position.Position{ - StartLine: 379, - EndLine: 379, - StartPos: 6926, - EndPos: 6944, + &ast.StmtHaltCompiler{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 379, + EndLine: 379, + StartPos: 6926, + EndPos: 6944, + }, }, }, }, @@ -18420,97 +22474,119 @@ func TestPhp5Strings(t *testing.T) { '; ` - expected := &node.Root{ - Position: &position.Position{ - StartLine: 2, - EndLine: 10, - StartPos: 5, - EndPos: 70, + expected := &ast.Root{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 10, + StartPos: 5, + EndPos: 70, + }, }, - Stmts: []node.Node{ - &stmt.Expression{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 5, - EndPos: 12, - }, - Expr: &scalar.String{ + Stmts: []ast.Vertex{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 5, - EndPos: 11, + EndPos: 12, }, - Value: "\"test\"", + }, + Expr: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 11, + }, + }, + Value: []byte("\"test\""), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 15, - EndPos: 24, - }, - Expr: &scalar.String{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 3, EndLine: 3, StartPos: 15, - EndPos: 23, + EndPos: 24, }, - Value: "\"\\$test\"", + }, + Expr: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 3, + EndLine: 3, + StartPos: 15, + EndPos: 23, + }, + }, + Value: []byte("\"\\$test\""), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 4, - EndLine: 6, - StartPos: 27, - EndPos: 41, - }, - Expr: &scalar.String{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 6, StartPos: 27, - EndPos: 40, + EndPos: 41, }, - Value: "\"\n\t\t\ttest\n\t\t\"", + }, + Expr: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 6, + StartPos: 27, + EndPos: 40, + }, + }, + Value: []byte("\"\n\t\t\ttest\n\t\t\""), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 44, - EndPos: 52, - }, - Expr: &scalar.String{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 44, - EndPos: 51, + EndPos: 52, }, - Value: "'$test'", + }, + Expr: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 44, + EndPos: 51, + }, + }, + Value: []byte("'$test'"), }, }, - &stmt.Expression{ - Position: &position.Position{ - StartLine: 8, - EndLine: 10, - StartPos: 55, - EndPos: 70, - }, - Expr: &scalar.String{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 8, EndLine: 10, StartPos: 55, - EndPos: 69, + EndPos: 70, }, - Value: "'\n\t\t\t$test\n\t\t'", + }, + Expr: &ast.ScalarString{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 8, + EndLine: 10, + StartPos: 55, + EndPos: 69, + }, + }, + Value: []byte("'\n\t\t\t$test\n\t\t'"), }, }, }, @@ -18540,165 +22616,201 @@ CAD; CAD; ` - expected := &node.Root{ - Position: &position.Position{ - StartLine: 2, - EndLine: 15, - StartPos: 5, - EndPos: 120, + expected := &ast.Root{ + Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 15, + StartPos: 5, + EndPos: 120, + }, }, - Stmts: []node.Node{ - &stmt.Expression{ - Position: &position.Position{ - StartLine: 2, - EndLine: 3, - StartPos: 5, - EndPos: 16, - }, - Expr: &scalar.Heredoc{ + Stmts: []ast.Vertex{ + &ast.StmtExpression{ + Node: ast.Node{ Position: &position.Position{ StartLine: 2, EndLine: 3, StartPos: 5, - EndPos: 15, + EndPos: 16, }, - Label: "<<rHFUgT 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 R7^v6BSbDbyRXWz<{|AgiW|IH_ delta 5074 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 gLcHyBwHct&1xmdbiz?4sgk8*kL&JBZFiy+