diff --git a/internal/php5/parser_test.go b/internal/php5/parser_test.go index b4a4ee9..a60a8fb 100644 --- a/internal/php5/parser_test.go +++ b/internal/php5/parser_test.go @@ -23235,23 +23235,15 @@ func TestStmtTraitUse(t *testing.T) { }, }, }, - Adaptations: &ast.StmtNop{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 22, EndPos: 23, }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 22, - EndPos: 23, - }, - }, }, }, }, @@ -23518,23 +23510,15 @@ func TestStmtTraitUse_Uses(t *testing.T) { }, }, }, - Adaptations: &ast.StmtNop{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 27, EndPos: 28, }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, - }, }, }, }, @@ -23801,44 +23785,36 @@ func TestStmtTraitUse_EmptyAdaptations(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 30, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, @@ -24106,120 +24082,59 @@ func TestStmtTraitUse_Modifier(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 46, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 43, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 43, + EndPos: 33, }, - Ref: &ast.StmtTraitMethodRef{ + Method: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - Method: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, - }, - }, - }, - Value: []byte("one"), - }, - }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 34, - EndPos: 36, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 33, - EndPos: 34, - }, - }, - }, - }, - Modifier: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - IdentifierTkn: &token.Token{ - ID: token.T_PUBLIC, - Value: []byte("public"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, FreeFloating: []*token.Token{ { ID: token.T_WHITESPACE, @@ -24227,45 +24142,98 @@ func TestStmtTraitUse_Modifier(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 36, - EndPos: 37, + StartPos: 29, + EndPos: 30, }, }, }, }, - Value: []byte("public"), + Value: []byte("one"), }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 34, + EndPos: 36, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 34, + }, + }, + }, + }, + Modifier: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 37, + EndPos: 43, + }, + IdentifierTkn: &token.Token{ + ID: token.T_PUBLIC, + Value: []byte("public"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 43, - EndPos: 44, + StartPos: 37, + EndPos: 43, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 36, + EndPos: 37, + }, + }, + }, + }, + Value: []byte("public"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 43, + EndPos: 44, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 45, - EndPos: 46, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 44, - EndPos: 45, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 45, + EndPos: 46, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 44, + EndPos: 45, }, }, }, @@ -24535,90 +24503,112 @@ func TestStmtTraitUse_AliasModifier(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 50, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 47, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 47, + EndPos: 33, }, - Ref: &ast.StmtTraitMethodRef{ + Method: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - Method: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, - Value: []byte("one"), + }, + Value: []byte("one"), + }, + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 34, + EndPos: 36, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 34, + }, }, }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), + }, + Modifier: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 37, + EndPos: 43, + }, + IdentifierTkn: &token.Token{ + ID: token.T_PUBLIC, + Value: []byte("public"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 34, - EndPos: 36, + StartPos: 37, + EndPos: 43, }, FreeFloating: []*token.Token{ { @@ -24627,105 +24617,75 @@ func TestStmtTraitUse_AliasModifier(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 33, - EndPos: 34, + StartPos: 36, + EndPos: 37, }, }, }, }, - Modifier: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - IdentifierTkn: &token.Token{ - ID: token.T_PUBLIC, - Value: []byte("public"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 36, - EndPos: 37, - }, - }, - }, - }, - Value: []byte("public"), + Value: []byte("public"), + }, + Alias: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 44, + EndPos: 47, }, - Alias: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("two"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 44, EndPos: 47, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("two"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 44, - EndPos: 47, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 43, - EndPos: 44, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 43, + EndPos: 44, }, }, }, - Value: []byte("two"), }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 47, - EndPos: 48, - }, + Value: []byte("two"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 47, + EndPos: 48, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 49, - EndPos: 50, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 48, - EndPos: 49, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 50, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 48, + EndPos: 49, }, }, }, @@ -24995,343 +24955,365 @@ func TestStmtTraitUse_Adaptions(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 78, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUsePrecedence{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUsePrecedence{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 58, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 58, + EndPos: 38, }, - Ref: &ast.StmtTraitMethodRef{ + Trait: &ast.NameName{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 38, + EndPos: 33, }, - Trait: &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 33, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Bar"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Bar"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, - Value: []byte("Bar"), }, + Value: []byte("Bar"), }, }, - DoubleColonTkn: &token.Token{ - ID: token.T_PAAMAYIM_NEKUDOTAYIM, - Value: []byte("::"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 33, - EndPos: 35, - }, + }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 35, }, - Method: &ast.Identifier{ + }, + Method: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 35, + EndPos: 38, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 35, EndPos: 38, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 35, - EndPos: 38, - }, - }, - Value: []byte("one"), }, + Value: []byte("one"), }, - InsteadofTkn: &token.Token{ - ID: token.T_INSTEADOF, - Value: []byte("insteadof"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 39, - EndPos: 48, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 38, - EndPos: 39, - }, - }, - }, + }, + InsteadofTkn: &token.Token{ + ID: token.T_INSTEADOF, + Value: []byte("insteadof"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 39, + EndPos: 48, }, - Insteadof: []ast.Vertex{ - &ast.NameName{ + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 49, - EndPos: 52, + StartPos: 38, + EndPos: 39, }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + }, + }, + }, + Insteadof: []ast.Vertex{ + &ast.NameName{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 52, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 52, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Baz"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 49, EndPos: 52, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Baz"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 49, - EndPos: 52, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 48, - EndPos: 49, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 48, + EndPos: 49, }, }, }, - Value: []byte("Baz"), }, + Value: []byte("Baz"), }, }, - &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 54, - EndPos: 58, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + }, + &ast.NameName{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 54, + EndPos: 58, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 54, + EndPos: 58, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Quux"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 54, EndPos: 58, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Quux"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 54, - EndPos: 58, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 53, - EndPos: 54, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 53, + EndPos: 54, }, }, }, - Value: []byte("Quux"), }, + Value: []byte("Quux"), }, }, }, - SeparatorTkns: []*token.Token{ - { - ID: token.ID(44), - Value: []byte(","), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 52, - EndPos: 53, - }, - }, - }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 58, - EndPos: 59, - }, - }, }, - &ast.StmtTraitUseAlias{ + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 52, + EndPos: 53, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 58, + EndPos: 59, + }, + }, + }, + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 60, + EndPos: 75, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, - EndPos: 75, + EndPos: 68, }, - Ref: &ast.StmtTraitMethodRef{ + Trait: &ast.NameName{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, - EndPos: 68, + EndPos: 63, }, - Trait: &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 60, - EndPos: 63, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 60, + EndPos: 63, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Baz"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, EndPos: 63, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Baz"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 60, - EndPos: 63, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 59, - EndPos: 60, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 59, + EndPos: 60, }, }, }, - Value: []byte("Baz"), }, + Value: []byte("Baz"), }, }, - DoubleColonTkn: &token.Token{ - ID: token.T_PAAMAYIM_NEKUDOTAYIM, - Value: []byte("::"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 63, - EndPos: 65, - }, + }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 63, + EndPos: 65, }, - Method: &ast.Identifier{ + }, + Method: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 65, + EndPos: 68, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 65, EndPos: 68, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 65, - EndPos: 68, - }, + }, + Value: []byte("one"), + }, + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 69, + EndPos: 71, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 68, + EndPos: 69, }, - Value: []byte("one"), }, }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), + }, + Alias: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 72, + EndPos: 75, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("two"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 69, - EndPos: 71, + StartPos: 72, + EndPos: 75, }, FreeFloating: []*token.Token{ { @@ -25340,74 +25322,44 @@ func TestStmtTraitUse_Adaptions(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 68, - EndPos: 69, + StartPos: 71, + EndPos: 72, }, }, }, }, - Alias: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 72, - EndPos: 75, - }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("two"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 72, - EndPos: 75, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 71, - EndPos: 72, - }, - }, - }, - }, - Value: []byte("two"), - }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 75, - EndPos: 76, - }, + Value: []byte("two"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 75, + EndPos: 76, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 77, - EndPos: 78, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 76, - EndPos: 77, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 77, + EndPos: 78, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 76, + EndPos: 77, }, }, }, diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 59fe0b9..0aaa2b9 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -339,7 +339,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:5627 +// line internal/php5/php5.y:5637 // line yacctab:1 var yyExca = [...]int{ @@ -4347,17 +4347,27 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] // line internal/php5/php5.y:2152 { - yyVAL.node = &ast.StmtTraitUse{ + traitUse := &ast.StmtTraitUse{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), UseTkn: yyDollar[1].token, Traits: yyDollar[2].node.(*ast.ParserSeparatedList).Items, SeparatorTkns: yyDollar[2].node.(*ast.ParserSeparatedList).SeparatorTkns, - Adaptations: yyDollar[3].node, } + + switch n := yyDollar[3].node.(type) { + case *ast.TraitAdaptationList: + traitUse.OpenCurlyBracketTkn = n.OpenCurlyBracketTkn + traitUse.Adaptations = n.Adaptations + traitUse.CloseCurlyBracketTkn = n.CloseCurlyBracketTkn + case *ast.StmtNop: + traitUse.SemiColonTkn = n.SemiColonTkn + } + + yyVAL.node = traitUse } case 176: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2165 + // line internal/php5/php5.y:2175 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4365,7 +4375,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2171 + // line internal/php5/php5.y:2181 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4374,7 +4384,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2181 + // line internal/php5/php5.y:2191 { yyVAL.node = &ast.StmtNop{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4383,9 +4393,9 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2188 + // line internal/php5/php5.y:2198 { - yyVAL.node = &ast.StmtTraitAdaptationList{ + yyVAL.node = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), OpenCurlyBracketTkn: yyDollar[1].token, Adaptations: yyDollar[2].list, @@ -4394,31 +4404,31 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2200 + // line internal/php5/php5.y:2210 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2204 + // line internal/php5/php5.y:2214 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2211 + // line internal/php5/php5.y:2221 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2215 + // line internal/php5/php5.y:2225 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2222 + // line internal/php5/php5.y:2232 { yyDollar[1].node.(*ast.StmtTraitUsePrecedence).SemiColonTkn = yyDollar[2].token @@ -4426,7 +4436,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2228 + // line internal/php5/php5.y:2238 { yyDollar[1].node.(*ast.StmtTraitUseAlias).SemiColonTkn = yyDollar[2].token @@ -4434,7 +4444,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2237 + // line internal/php5/php5.y:2247 { yyVAL.node = &ast.StmtTraitUsePrecedence{ Position: yylex.(*Parser).builder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -4446,7 +4456,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2250 + // line internal/php5/php5.y:2260 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4454,7 +4464,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2256 + // line internal/php5/php5.y:2266 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4463,7 +4473,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2266 + // line internal/php5/php5.y:2276 { yyVAL.node = &ast.StmtTraitMethodRef{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4476,13 +4486,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2277 + // line internal/php5/php5.y:2287 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2284 + // line internal/php5/php5.y:2294 { yyVAL.node = &ast.StmtTraitMethodRef{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -4497,7 +4507,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2300 + // line internal/php5/php5.y:2310 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -4513,7 +4523,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2314 + // line internal/php5/php5.y:2324 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -4524,19 +4534,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2326 + // line internal/php5/php5.y:2336 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2330 + // line internal/php5/php5.y:2340 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2337 + // line internal/php5/php5.y:2347 { yyVAL.node = &ast.StmtNop{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4545,7 +4555,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2344 + // line internal/php5/php5.y:2354 { yyVAL.node = &ast.StmtStmtList{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -4556,13 +4566,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2356 + // line internal/php5/php5.y:2366 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2360 + // line internal/php5/php5.y:2370 { yyVAL.list = []ast.Vertex{ &ast.Identifier{ @@ -4574,31 +4584,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2373 + // line internal/php5/php5.y:2383 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2377 + // line internal/php5/php5.y:2387 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2384 + // line internal/php5/php5.y:2394 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2388 + // line internal/php5/php5.y:2398 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2395 + // line internal/php5/php5.y:2405 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4608,7 +4618,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2403 + // line internal/php5/php5.y:2413 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4618,7 +4628,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2411 + // line internal/php5/php5.y:2421 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4628,7 +4638,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2419 + // line internal/php5/php5.y:2429 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4638,7 +4648,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2427 + // line internal/php5/php5.y:2437 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4648,7 +4658,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2435 + // line internal/php5/php5.y:2445 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4658,7 +4668,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2446 + // line internal/php5/php5.y:2456 { item := &ast.StmtProperty{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[3].token), @@ -4679,7 +4689,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2465 + // line internal/php5/php5.y:2475 { item := &ast.StmtProperty{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node), @@ -4702,7 +4712,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2486 + // line internal/php5/php5.y:2496 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -4723,7 +4733,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2505 + // line internal/php5/php5.y:2515 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -4745,7 +4755,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2528 + // line internal/php5/php5.y:2538 { constList := yyDollar[1].node.(*ast.StmtClassConstList) constList.Position = yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) @@ -4765,7 +4775,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2546 + // line internal/php5/php5.y:2556 { yyVAL.node = &ast.StmtClassConstList{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), @@ -4786,7 +4796,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2568 + // line internal/php5/php5.y:2578 { yyDollar[1].node.(*ast.StmtEcho).Exprs = append(yyDollar[1].node.(*ast.StmtEcho).Exprs, yyDollar[3].node) yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns, yyDollar[2].token) @@ -4795,7 +4805,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2575 + // line internal/php5/php5.y:2585 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -4803,19 +4813,19 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2585 + // line internal/php5/php5.y:2595 { yyVAL.node = &ast.ParserSeparatedList{} } case 219: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2589 + // line internal/php5/php5.y:2599 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2596 + // line internal/php5/php5.y:2606 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4824,7 +4834,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2603 + // line internal/php5/php5.y:2613 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4832,19 +4842,19 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2612 + // line internal/php5/php5.y:2622 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2616 + // line internal/php5/php5.y:2626 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2623 + // line internal/php5/php5.y:2633 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -4858,7 +4868,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2635 + // line internal/php5/php5.y:2645 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -4872,37 +4882,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2650 + // line internal/php5/php5.y:2660 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2654 + // line internal/php5/php5.y:2664 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2658 + // line internal/php5/php5.y:2668 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2665 + // line internal/php5/php5.y:2675 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2669 + // line internal/php5/php5.y:2679 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2676 + // line internal/php5/php5.y:2686 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ @@ -4923,7 +4933,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2698 + // line internal/php5/php5.y:2708 { yyVAL.node = &ast.ExprAssign{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node), @@ -4941,7 +4951,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2714 + // line internal/php5/php5.y:2724 { yyVAL.node = &ast.ExprAssign{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -4952,7 +4962,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2723 + // line internal/php5/php5.y:2733 { yyVAL.node = &ast.ExprAssignReference{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -4964,7 +4974,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2733 + // line internal/php5/php5.y:2743 { var _new *ast.ExprNew if yyDollar[3].token != nil { @@ -4995,7 +5005,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2762 + // line internal/php5/php5.y:2772 { yyVAL.node = &ast.ExprClone{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5005,7 +5015,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2770 + // line internal/php5/php5.y:2780 { yyVAL.node = &ast.ExprAssignPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5016,7 +5026,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2779 + // line internal/php5/php5.y:2789 { yyVAL.node = &ast.ExprAssignMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5027,7 +5037,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2788 + // line internal/php5/php5.y:2798 { yyVAL.node = &ast.ExprAssignMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5038,7 +5048,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2797 + // line internal/php5/php5.y:2807 { yyVAL.node = &ast.ExprAssignPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5049,7 +5059,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2806 + // line internal/php5/php5.y:2816 { yyVAL.node = &ast.ExprAssignDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5060,7 +5070,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2815 + // line internal/php5/php5.y:2825 { yyVAL.node = &ast.ExprAssignConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5071,7 +5081,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2824 + // line internal/php5/php5.y:2834 { yyVAL.node = &ast.ExprAssignMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5082,7 +5092,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2833 + // line internal/php5/php5.y:2843 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5093,7 +5103,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2842 + // line internal/php5/php5.y:2852 { yyVAL.node = &ast.ExprAssignBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5104,7 +5114,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2851 + // line internal/php5/php5.y:2861 { yyVAL.node = &ast.ExprAssignBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5115,7 +5125,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2860 + // line internal/php5/php5.y:2870 { yyVAL.node = &ast.ExprAssignShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5126,7 +5136,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2869 + // line internal/php5/php5.y:2879 { yyVAL.node = &ast.ExprAssignShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5137,7 +5147,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2878 + // line internal/php5/php5.y:2888 { yyVAL.node = &ast.ExprPostInc{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token), @@ -5147,7 +5157,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2886 + // line internal/php5/php5.y:2896 { yyVAL.node = &ast.ExprPreInc{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5157,7 +5167,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2894 + // line internal/php5/php5.y:2904 { yyVAL.node = &ast.ExprPostDec{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token), @@ -5167,7 +5177,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2902 + // line internal/php5/php5.y:2912 { yyVAL.node = &ast.ExprPreDec{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5177,7 +5187,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2910 + // line internal/php5/php5.y:2920 { yyVAL.node = &ast.ExprBinaryBooleanOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5188,7 +5198,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2919 + // line internal/php5/php5.y:2929 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5199,7 +5209,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2928 + // line internal/php5/php5.y:2938 { yyVAL.node = &ast.ExprBinaryLogicalOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5210,7 +5220,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2937 + // line internal/php5/php5.y:2947 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5221,7 +5231,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2946 + // line internal/php5/php5.y:2956 { yyVAL.node = &ast.ExprBinaryLogicalXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5232,7 +5242,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2955 + // line internal/php5/php5.y:2965 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5243,7 +5253,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2964 + // line internal/php5/php5.y:2974 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5254,7 +5264,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2973 + // line internal/php5/php5.y:2983 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5265,7 +5275,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2982 + // line internal/php5/php5.y:2992 { yyVAL.node = &ast.ExprBinaryConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5276,7 +5286,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2991 + // line internal/php5/php5.y:3001 { yyVAL.node = &ast.ExprBinaryPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5287,7 +5297,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3000 + // line internal/php5/php5.y:3010 { yyVAL.node = &ast.ExprBinaryMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5298,7 +5308,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3009 + // line internal/php5/php5.y:3019 { yyVAL.node = &ast.ExprBinaryMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5309,7 +5319,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3018 + // line internal/php5/php5.y:3028 { yyVAL.node = &ast.ExprBinaryPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5320,7 +5330,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3027 + // line internal/php5/php5.y:3037 { yyVAL.node = &ast.ExprBinaryDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5331,7 +5341,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3036 + // line internal/php5/php5.y:3046 { yyVAL.node = &ast.ExprBinaryMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5342,7 +5352,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3045 + // line internal/php5/php5.y:3055 { yyVAL.node = &ast.ExprBinaryShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5353,7 +5363,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3054 + // line internal/php5/php5.y:3064 { yyVAL.node = &ast.ExprBinaryShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5364,7 +5374,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3063 + // line internal/php5/php5.y:3073 { yyVAL.node = &ast.ExprUnaryPlus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5374,7 +5384,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3071 + // line internal/php5/php5.y:3081 { yyVAL.node = &ast.ExprUnaryMinus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5384,7 +5394,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3079 + // line internal/php5/php5.y:3089 { yyVAL.node = &ast.ExprBooleanNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5394,7 +5404,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3087 + // line internal/php5/php5.y:3097 { yyVAL.node = &ast.ExprBitwiseNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5404,7 +5414,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3095 + // line internal/php5/php5.y:3105 { yyVAL.node = &ast.ExprBinaryIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5415,7 +5425,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3104 + // line internal/php5/php5.y:3114 { yyVAL.node = &ast.ExprBinaryNotIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5426,7 +5436,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3113 + // line internal/php5/php5.y:3123 { yyVAL.node = &ast.ExprBinaryEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5437,7 +5447,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3122 + // line internal/php5/php5.y:3132 { yyVAL.node = &ast.ExprBinaryNotEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5448,7 +5458,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3131 + // line internal/php5/php5.y:3141 { yyVAL.node = &ast.ExprBinarySmaller{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5459,7 +5469,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3140 + // line internal/php5/php5.y:3150 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5470,7 +5480,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3149 + // line internal/php5/php5.y:3159 { yyVAL.node = &ast.ExprBinaryGreater{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5481,7 +5491,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3158 + // line internal/php5/php5.y:3168 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5492,7 +5502,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3167 + // line internal/php5/php5.y:3177 { yyVAL.node = &ast.ExprInstanceOf{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5503,19 +5513,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3176 + // line internal/php5/php5.y:3186 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3180 + // line internal/php5/php5.y:3190 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3184 + // line internal/php5/php5.y:3194 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5550,7 +5560,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:3217 + // line internal/php5/php5.y:3227 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), @@ -5563,7 +5573,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3228 + // line internal/php5/php5.y:3238 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -5575,13 +5585,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3238 + // line internal/php5/php5.y:3248 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3242 + // line internal/php5/php5.y:3252 { yyVAL.node = &ast.ExprCastInt{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5591,7 +5601,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3250 + // line internal/php5/php5.y:3260 { yyVAL.node = &ast.ExprCastDouble{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5601,7 +5611,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3258 + // line internal/php5/php5.y:3268 { yyVAL.node = &ast.ExprCastString{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5611,7 +5621,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3266 + // line internal/php5/php5.y:3276 { yyVAL.node = &ast.ExprCastArray{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5621,7 +5631,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3274 + // line internal/php5/php5.y:3284 { yyVAL.node = &ast.ExprCastObject{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5631,7 +5641,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3282 + // line internal/php5/php5.y:3292 { yyVAL.node = &ast.ExprCastBool{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5641,7 +5651,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3290 + // line internal/php5/php5.y:3300 { yyVAL.node = &ast.ExprCastUnset{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5651,7 +5661,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3298 + // line internal/php5/php5.y:3308 { exit := &ast.ExprExit{ DieTkn: yyDollar[1].token, @@ -5670,7 +5680,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3315 + // line internal/php5/php5.y:3325 { yyVAL.node = &ast.ExprErrorSuppress{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5680,25 +5690,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3323 + // line internal/php5/php5.y:3333 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3327 + // line internal/php5/php5.y:3337 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3331 + // line internal/php5/php5.y:3341 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3335 + // line internal/php5/php5.y:3345 { yyVAL.node = &ast.ExprShellExec{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5709,7 +5719,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3344 + // line internal/php5/php5.y:3354 { yyVAL.node = &ast.ExprPrint{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5719,7 +5729,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3352 + // line internal/php5/php5.y:3362 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -5728,7 +5738,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:3359 + // line internal/php5/php5.y:3369 { yyVAL.node = &ast.ExprClosure{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token), @@ -5746,7 +5756,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php5/php5.y:3375 + // line internal/php5/php5.y:3385 { yyVAL.node = &ast.ExprClosure{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token), @@ -5765,7 +5775,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3395 + // line internal/php5/php5.y:3405 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5775,7 +5785,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3403 + // line internal/php5/php5.y:3413 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5784,18 +5794,6 @@ yydefault: } } case 308: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3411 - { - yyVAL.node = &ast.ExprYield{ - Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), - YieldTkn: yyDollar[1].token, - Key: yyDollar[2].node, - DoubleArrowTkn: yyDollar[3].token, - Value: yyDollar[4].node, - } - } - case 309: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:3421 { @@ -5807,19 +5805,19 @@ yydefault: Value: yyDollar[4].node, } } - case 310: + case 309: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3434 + // line internal/php5/php5.y:3431 { - yyVAL.node = &ast.ExprArrayDimFetch{ - Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), - Var: yyDollar[1].node, - OpenBracketTkn: yyDollar[2].token, - Dim: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, + yyVAL.node = &ast.ExprYield{ + Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), + YieldTkn: yyDollar[1].token, + Key: yyDollar[2].node, + DoubleArrowTkn: yyDollar[3].token, + Value: yyDollar[4].node, } } - case 311: + case 310: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:3444 { @@ -5831,9 +5829,21 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } - case 312: + case 311: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:3454 + { + yyVAL.node = &ast.ExprArrayDimFetch{ + Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + } + case 312: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php5/php5.y:3464 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -5849,7 +5859,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3468 + // line internal/php5/php5.y:3478 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -5861,7 +5871,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3481 + // line internal/php5/php5.y:3491 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -5874,7 +5884,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3492 + // line internal/php5/php5.y:3502 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5886,19 +5896,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3505 + // line internal/php5/php5.y:3515 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3512 + // line internal/php5/php5.y:3522 { yyVAL.node = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3516 + // line internal/php5/php5.y:3526 { yyVAL.node = &ast.ExprClosureUse{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -5911,7 +5921,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3530 + // line internal/php5/php5.y:3540 { variable := &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[3].token), @@ -5929,7 +5939,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3546 + // line internal/php5/php5.y:3556 { reference := &ast.ExprReference{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token), @@ -5951,7 +5961,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3566 + // line internal/php5/php5.y:3576 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -5968,7 +5978,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3581 + // line internal/php5/php5.y:3591 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -5989,7 +5999,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3603 + // line internal/php5/php5.y:3613 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodeListNodePosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[2].node), @@ -6006,7 +6016,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3618 + // line internal/php5/php5.y:3628 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), @@ -6025,7 +6035,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3635 + // line internal/php5/php5.y:3645 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), @@ -6043,7 +6053,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3651 + // line internal/php5/php5.y:3661 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6058,7 +6068,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3664 + // line internal/php5/php5.y:3674 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6073,7 +6083,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3677 + // line internal/php5/php5.y:3687 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6088,7 +6098,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3690 + // line internal/php5/php5.y:3700 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6103,7 +6113,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3703 + // line internal/php5/php5.y:3713 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), @@ -6116,7 +6126,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3717 + // line internal/php5/php5.y:3727 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6126,7 +6136,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3725 + // line internal/php5/php5.y:3735 { yyVAL.node = &ast.NameName{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6136,7 +6146,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3733 + // line internal/php5/php5.y:3743 { yyVAL.node = &ast.NameRelative{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6148,7 +6158,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3743 + // line internal/php5/php5.y:3753 { yyVAL.node = &ast.NameFullyQualified{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6159,7 +6169,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3755 + // line internal/php5/php5.y:3765 { yyVAL.node = &ast.NameName{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6169,7 +6179,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3763 + // line internal/php5/php5.y:3773 { yyVAL.node = &ast.NameRelative{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6181,7 +6191,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3773 + // line internal/php5/php5.y:3783 { yyVAL.node = &ast.NameFullyQualified{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6192,19 +6202,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3785 + // line internal/php5/php5.y:3795 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3789 + // line internal/php5/php5.y:3799 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3796 + // line internal/php5/php5.y:3806 { yyVAL.node = yyDollar[1].node @@ -6240,25 +6250,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3830 + // line internal/php5/php5.y:3840 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3838 + // line internal/php5/php5.y:3848 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3842 + // line internal/php5/php5.y:3852 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3850 + // line internal/php5/php5.y:3860 { yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -6266,13 +6276,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3859 + // line internal/php5/php5.y:3869 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3863 + // line internal/php5/php5.y:3873 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6282,19 +6292,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3871 + // line internal/php5/php5.y:3881 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3878 + // line internal/php5/php5.y:3888 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3882 + // line internal/php5/php5.y:3892 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6306,25 +6316,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3892 + // line internal/php5/php5.y:3902 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3899 + // line internal/php5/php5.y:3909 { yyVAL.node = &ast.ArgumentList{} } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3903 + // line internal/php5/php5.y:3913 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3910 + // line internal/php5/php5.y:3920 { yyVAL.node = &ast.ScalarLnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6334,7 +6344,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3918 + // line internal/php5/php5.y:3928 { yyVAL.node = &ast.ScalarDnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6344,7 +6354,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3926 + // line internal/php5/php5.y:3936 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6354,7 +6364,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3934 + // line internal/php5/php5.y:3944 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6364,7 +6374,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3942 + // line internal/php5/php5.y:3952 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6374,7 +6384,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3950 + // line internal/php5/php5.y:3960 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6384,7 +6394,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3958 + // line internal/php5/php5.y:3968 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6394,7 +6404,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3966 + // line internal/php5/php5.y:3976 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6404,7 +6414,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3974 + // line internal/php5/php5.y:3984 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6414,7 +6424,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3982 + // line internal/php5/php5.y:3992 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6424,7 +6434,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3990 + // line internal/php5/php5.y:4000 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6441,7 +6451,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4005 + // line internal/php5/php5.y:4015 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6451,7 +6461,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4016 + // line internal/php5/php5.y:4026 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6466,25 +6476,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4032 + // line internal/php5/php5.y:4042 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4039 + // line internal/php5/php5.y:4049 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4043 + // line internal/php5/php5.y:4053 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4047 + // line internal/php5/php5.y:4057 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6497,7 +6507,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4058 + // line internal/php5/php5.y:4068 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6512,7 +6522,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4071 + // line internal/php5/php5.y:4081 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6526,7 +6536,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4083 + // line internal/php5/php5.y:4093 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6539,7 +6549,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4094 + // line internal/php5/php5.y:4104 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6551,13 +6561,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4104 + // line internal/php5/php5.y:4114 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4108 + // line internal/php5/php5.y:4118 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6567,13 +6577,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4116 + // line internal/php5/php5.y:4126 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4123 + // line internal/php5/php5.y:4133 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6585,7 +6595,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4133 + // line internal/php5/php5.y:4143 { yyVAL.node = &ast.ExprBinaryPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6596,7 +6606,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4142 + // line internal/php5/php5.y:4152 { yyVAL.node = &ast.ExprBinaryMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6607,7 +6617,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4151 + // line internal/php5/php5.y:4161 { yyVAL.node = &ast.ExprBinaryMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6618,7 +6628,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4160 + // line internal/php5/php5.y:4170 { yyVAL.node = &ast.ExprBinaryPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6629,7 +6639,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4169 + // line internal/php5/php5.y:4179 { yyVAL.node = &ast.ExprBinaryDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6640,7 +6650,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4178 + // line internal/php5/php5.y:4188 { yyVAL.node = &ast.ExprBinaryMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6651,7 +6661,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4187 + // line internal/php5/php5.y:4197 { yyVAL.node = &ast.ExprBooleanNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6661,7 +6671,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4195 + // line internal/php5/php5.y:4205 { yyVAL.node = &ast.ExprBitwiseNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6671,7 +6681,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4203 + // line internal/php5/php5.y:4213 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6682,7 +6692,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4212 + // line internal/php5/php5.y:4222 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6693,7 +6703,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4221 + // line internal/php5/php5.y:4231 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6704,7 +6714,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4230 + // line internal/php5/php5.y:4240 { yyVAL.node = &ast.ExprBinaryShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6715,7 +6725,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4239 + // line internal/php5/php5.y:4249 { yyVAL.node = &ast.ExprBinaryShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6726,7 +6736,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4248 + // line internal/php5/php5.y:4258 { yyVAL.node = &ast.ExprBinaryConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6737,7 +6747,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4257 + // line internal/php5/php5.y:4267 { yyVAL.node = &ast.ExprBinaryLogicalXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6748,7 +6758,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4266 + // line internal/php5/php5.y:4276 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6759,7 +6769,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4275 + // line internal/php5/php5.y:4285 { yyVAL.node = &ast.ExprBinaryLogicalOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6770,7 +6780,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4284 + // line internal/php5/php5.y:4294 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6781,7 +6791,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4293 + // line internal/php5/php5.y:4303 { yyVAL.node = &ast.ExprBinaryBooleanOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6792,7 +6802,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4302 + // line internal/php5/php5.y:4312 { yyVAL.node = &ast.ExprBinaryIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6803,7 +6813,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4311 + // line internal/php5/php5.y:4321 { yyVAL.node = &ast.ExprBinaryNotIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6814,7 +6824,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4320 + // line internal/php5/php5.y:4330 { yyVAL.node = &ast.ExprBinaryEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6825,7 +6835,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4329 + // line internal/php5/php5.y:4339 { yyVAL.node = &ast.ExprBinaryNotEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6836,7 +6846,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4338 + // line internal/php5/php5.y:4348 { yyVAL.node = &ast.ExprBinarySmaller{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6847,7 +6857,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4347 + // line internal/php5/php5.y:4357 { yyVAL.node = &ast.ExprBinaryGreater{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6858,7 +6868,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4356 + // line internal/php5/php5.y:4366 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6869,7 +6879,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4365 + // line internal/php5/php5.y:4375 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6880,7 +6890,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4374 + // line internal/php5/php5.y:4384 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6892,7 +6902,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4384 + // line internal/php5/php5.y:4394 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), @@ -6905,7 +6915,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4395 + // line internal/php5/php5.y:4405 { yyVAL.node = &ast.ExprUnaryPlus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6915,7 +6925,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4403 + // line internal/php5/php5.y:4413 { yyVAL.node = &ast.ExprUnaryMinus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6925,7 +6935,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4411 + // line internal/php5/php5.y:4421 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6936,13 +6946,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4423 + // line internal/php5/php5.y:4433 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4427 + // line internal/php5/php5.y:4437 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6955,7 +6965,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4438 + // line internal/php5/php5.y:4448 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6970,7 +6980,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4451 + // line internal/php5/php5.y:4461 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6984,7 +6994,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4466 + // line internal/php5/php5.y:4476 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6997,25 +7007,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4477 + // line internal/php5/php5.y:4487 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4481 + // line internal/php5/php5.y:4491 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4485 + // line internal/php5/php5.y:4495 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4489 + // line internal/php5/php5.y:4499 { yyVAL.node = &ast.ScalarEncapsed{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7026,7 +7036,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4498 + // line internal/php5/php5.y:4508 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7037,7 +7047,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4507 + // line internal/php5/php5.y:4517 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7047,13 +7057,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4518 + // line internal/php5/php5.y:4528 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4522 + // line internal/php5/php5.y:4532 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7064,19 +7074,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4534 + // line internal/php5/php5.y:4544 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4538 + // line internal/php5/php5.y:4548 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4545 + // line internal/php5/php5.y:4555 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), @@ -7092,7 +7102,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4559 + // line internal/php5/php5.y:4569 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[3].node), @@ -7106,7 +7116,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4571 + // line internal/php5/php5.y:4581 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7121,7 +7131,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4584 + // line internal/php5/php5.y:4594 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7134,19 +7144,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4598 + // line internal/php5/php5.y:4608 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4602 + // line internal/php5/php5.y:4612 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4609 + // line internal/php5/php5.y:4619 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7157,7 +7167,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4618 + // line internal/php5/php5.y:4628 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7168,25 +7178,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4631 + // line internal/php5/php5.y:4641 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4639 + // line internal/php5/php5.y:4649 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4646 + // line internal/php5/php5.y:4656 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4653 + // line internal/php5/php5.y:4663 { yyVAL.node = yyDollar[1].node @@ -7263,25 +7273,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4728 + // line internal/php5/php5.y:4738 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4735 + // line internal/php5/php5.y:4745 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4739 + // line internal/php5/php5.y:4749 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4747 + // line internal/php5/php5.y:4757 { yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -7310,7 +7320,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4777 + // line internal/php5/php5.y:4787 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7324,7 +7334,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4789 + // line internal/php5/php5.y:4799 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7338,7 +7348,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4804 + // line internal/php5/php5.y:4814 { yyVAL.node = &ast.ExprMethodCall{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -7350,31 +7360,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4817 + // line internal/php5/php5.y:4827 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4821 + // line internal/php5/php5.y:4831 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4825 + // line internal/php5/php5.y:4835 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4832 + // line internal/php5/php5.y:4842 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4836 + // line internal/php5/php5.y:4846 { for i := len(yyDollar[1].list) - 1; i >= 0; i-- { yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node @@ -7386,7 +7396,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4849 + // line internal/php5/php5.y:4859 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -7397,7 +7407,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4858 + // line internal/php5/php5.y:4868 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -7408,23 +7418,11 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4870 + // line internal/php5/php5.y:4880 { yyVAL.node = yyDollar[1].node } case 452: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4877 - { - yyVAL.node = &ast.ExprArrayDimFetch{ - Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), - Var: yyDollar[1].node, - OpenBracketTkn: yyDollar[2].token, - Dim: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, - } - } - case 453: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:4887 { @@ -7436,33 +7434,45 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } + case 453: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php5/php5.y:4897 + { + yyVAL.node = &ast.ExprArrayDimFetch{ + Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4900 + // line internal/php5/php5.y:4910 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4904 + // line internal/php5/php5.y:4914 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4908 + // line internal/php5/php5.y:4918 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4916 + // line internal/php5/php5.y:4926 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4920 + // line internal/php5/php5.y:4930 { for i := len(yyDollar[1].list) - 1; i >= 0; i-- { yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node @@ -7474,23 +7484,11 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4930 + // line internal/php5/php5.y:4940 { yyVAL.node = yyDollar[1].node } case 460: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4937 - { - yyVAL.node = &ast.ExprArrayDimFetch{ - Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), - Var: yyDollar[1].node, - OpenBracketTkn: yyDollar[2].token, - Dim: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, - } - } - case 461: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:4947 { @@ -7502,15 +7500,27 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } + case 461: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php5/php5.y:4957 + { + yyVAL.node = &ast.ExprArrayDimFetch{ + Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4957 + // line internal/php5/php5.y:4967 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4965 + // line internal/php5/php5.y:4975 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7523,7 +7533,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4976 + // line internal/php5/php5.y:4986 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7538,25 +7548,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4992 + // line internal/php5/php5.y:5002 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4996 + // line internal/php5/php5.y:5006 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5004 + // line internal/php5/php5.y:5014 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5008 + // line internal/php5/php5.y:5018 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -7567,7 +7577,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5020 + // line internal/php5/php5.y:5030 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7581,7 +7591,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5032 + // line internal/php5/php5.y:5042 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7595,7 +7605,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5044 + // line internal/php5/php5.y:5054 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -7606,7 +7616,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5056 + // line internal/php5/php5.y:5066 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7616,7 +7626,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5064 + // line internal/php5/php5.y:5074 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7627,7 +7637,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5076 + // line internal/php5/php5.y:5086 { yyVAL.list = []ast.Vertex{ &ast.ExprVariable{ @@ -7638,7 +7648,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5085 + // line internal/php5/php5.y:5095 { yyVAL.list = append(yyDollar[1].list, &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[2].token), @@ -7647,7 +7657,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5095 + // line internal/php5/php5.y:5105 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -7656,7 +7666,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5102 + // line internal/php5/php5.y:5112 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7664,7 +7674,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5112 + // line internal/php5/php5.y:5122 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -7673,7 +7683,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5119 + // line internal/php5/php5.y:5129 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7696,19 +7706,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5140 + // line internal/php5/php5.y:5150 { yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5148 + // line internal/php5/php5.y:5158 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5152 + // line internal/php5/php5.y:5162 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7719,7 +7729,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5164 + // line internal/php5/php5.y:5174 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), @@ -7735,7 +7745,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5178 + // line internal/php5/php5.y:5188 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[3].node), @@ -7749,7 +7759,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5190 + // line internal/php5/php5.y:5200 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7764,7 +7774,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5203 + // line internal/php5/php5.y:5213 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7777,7 +7787,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5214 + // line internal/php5/php5.y:5224 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node), @@ -7797,7 +7807,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5232 + // line internal/php5/php5.y:5242 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), @@ -7815,7 +7825,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5248 + // line internal/php5/php5.y:5258 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7834,7 +7844,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5265 + // line internal/php5/php5.y:5275 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7851,13 +7861,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5283 + // line internal/php5/php5.y:5293 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5287 + // line internal/php5/php5.y:5297 { yyVAL.list = append( yyDollar[1].list, @@ -7870,13 +7880,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5298 + // line internal/php5/php5.y:5308 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5302 + // line internal/php5/php5.y:5312 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7889,7 +7899,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5316 + // line internal/php5/php5.y:5326 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7902,7 +7912,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5327 + // line internal/php5/php5.y:5337 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7921,7 +7931,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5344 + // line internal/php5/php5.y:5354 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7943,7 +7953,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5364 + // line internal/php5/php5.y:5374 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7957,7 +7967,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5376 + // line internal/php5/php5.y:5386 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7975,7 +7985,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5392 + // line internal/php5/php5.y:5402 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), @@ -7999,7 +8009,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5414 + // line internal/php5/php5.y:5424 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -8010,7 +8020,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5426 + // line internal/php5/php5.y:5436 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -8020,7 +8030,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5434 + // line internal/php5/php5.y:5444 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8039,7 +8049,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5451 + // line internal/php5/php5.y:5461 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -8052,7 +8062,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5465 + // line internal/php5/php5.y:5475 { yyVAL.node = &ast.ExprIsset{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8065,7 +8075,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5476 + // line internal/php5/php5.y:5486 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8077,7 +8087,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5486 + // line internal/php5/php5.y:5496 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8089,7 +8099,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5496 + // line internal/php5/php5.y:5506 { yyVAL.node = &ast.ExprInclude{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8099,7 +8109,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5504 + // line internal/php5/php5.y:5514 { yyVAL.node = &ast.ExprIncludeOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8109,7 +8119,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5512 + // line internal/php5/php5.y:5522 { yyVAL.node = &ast.ExprEval{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8121,7 +8131,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5522 + // line internal/php5/php5.y:5532 { yyVAL.node = &ast.ExprRequire{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8131,7 +8141,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5530 + // line internal/php5/php5.y:5540 { yyVAL.node = &ast.ExprRequireOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8141,7 +8151,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5541 + // line internal/php5/php5.y:5551 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8149,7 +8159,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5547 + // line internal/php5/php5.y:5557 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -8158,19 +8168,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5557 + // line internal/php5/php5.y:5567 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5561 + // line internal/php5/php5.y:5571 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5568 + // line internal/php5/php5.y:5578 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8185,7 +8195,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5581 + // line internal/php5/php5.y:5591 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8200,7 +8210,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5597 + // line internal/php5/php5.y:5607 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8215,7 +8225,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5613 + // line internal/php5/php5.y:5623 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 727d486..7867d5c 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -2150,13 +2150,23 @@ class_statement: trait_use_statement: T_USE trait_list trait_adaptations { - $$ = &ast.StmtTraitUse{ + traitUse := &ast.StmtTraitUse{ Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $3), UseTkn: $1, Traits: $2.(*ast.ParserSeparatedList).Items, SeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns, - Adaptations: $3, } + + switch n := $3.(type) { + case *ast.TraitAdaptationList : + traitUse.OpenCurlyBracketTkn = n.OpenCurlyBracketTkn + traitUse.Adaptations = n.Adaptations + traitUse.CloseCurlyBracketTkn = n.CloseCurlyBracketTkn + case *ast.StmtNop : + traitUse.SemiColonTkn = n.SemiColonTkn + }; + + $$ = traitUse } ; @@ -2186,7 +2196,7 @@ trait_adaptations: } | '{' trait_adaptation_list '}' { - $$ = &ast.StmtTraitAdaptationList{ + $$ = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition($1, $3), OpenCurlyBracketTkn: $1, Adaptations: $2, diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go index 6c94e47..76706ed 100644 --- a/internal/php7/parser_test.go +++ b/internal/php7/parser_test.go @@ -25219,23 +25219,15 @@ func TestStmtTraitUse(t *testing.T) { }, }, }, - Adaptations: &ast.StmtNop{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 22, EndPos: 23, }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 22, - EndPos: 23, - }, - }, }, }, }, @@ -25502,23 +25494,15 @@ func TestStmtTraitUse_Uses(t *testing.T) { }, }, }, - Adaptations: &ast.StmtNop{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 27, EndPos: 28, }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, - }, }, }, }, @@ -25785,44 +25769,36 @@ func TestStmtTraitUse_EmptyAdaptations(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 30, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, @@ -26090,120 +26066,59 @@ func TestStmtTraitUse_Modifier(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 46, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 43, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 43, + EndPos: 33, }, - Ref: &ast.StmtTraitMethodRef{ + Method: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - Method: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, - }, - }, - }, - Value: []byte("one"), - }, - }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 34, - EndPos: 36, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 33, - EndPos: 34, - }, - }, - }, - }, - Modifier: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - IdentifierTkn: &token.Token{ - ID: token.T_PUBLIC, - Value: []byte("public"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, FreeFloating: []*token.Token{ { ID: token.T_WHITESPACE, @@ -26211,45 +26126,98 @@ func TestStmtTraitUse_Modifier(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 36, - EndPos: 37, + StartPos: 29, + EndPos: 30, }, }, }, }, - Value: []byte("public"), + Value: []byte("one"), }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 34, + EndPos: 36, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 34, + }, + }, + }, + }, + Modifier: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 37, + EndPos: 43, + }, + IdentifierTkn: &token.Token{ + ID: token.T_PUBLIC, + Value: []byte("public"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 43, - EndPos: 44, + StartPos: 37, + EndPos: 43, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 36, + EndPos: 37, + }, + }, + }, + }, + Value: []byte("public"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 43, + EndPos: 44, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 45, - EndPos: 46, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 44, - EndPos: 45, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 45, + EndPos: 46, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 44, + EndPos: 45, }, }, }, @@ -26519,90 +26487,112 @@ func TestStmtTraitUse_AliasModifier(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 50, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 47, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 47, + EndPos: 33, }, - Ref: &ast.StmtTraitMethodRef{ + Method: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - Method: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, - Value: []byte("one"), + }, + Value: []byte("one"), + }, + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 34, + EndPos: 36, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 34, + }, }, }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), + }, + Modifier: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 37, + EndPos: 43, + }, + IdentifierTkn: &token.Token{ + ID: token.T_PUBLIC, + Value: []byte("public"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 34, - EndPos: 36, + StartPos: 37, + EndPos: 43, }, FreeFloating: []*token.Token{ { @@ -26611,105 +26601,75 @@ func TestStmtTraitUse_AliasModifier(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 33, - EndPos: 34, + StartPos: 36, + EndPos: 37, }, }, }, }, - Modifier: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - IdentifierTkn: &token.Token{ - ID: token.T_PUBLIC, - Value: []byte("public"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 37, - EndPos: 43, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 36, - EndPos: 37, - }, - }, - }, - }, - Value: []byte("public"), + Value: []byte("public"), + }, + Alias: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 44, + EndPos: 47, }, - Alias: &ast.Identifier{ + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("two"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 44, EndPos: 47, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("two"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 44, - EndPos: 47, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 43, - EndPos: 44, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 43, + EndPos: 44, }, }, }, - Value: []byte("two"), }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 47, - EndPos: 48, - }, + Value: []byte("two"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 47, + EndPos: 48, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 49, - EndPos: 50, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 48, - EndPos: 49, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 50, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 48, + EndPos: 49, }, }, }, @@ -26979,343 +26939,365 @@ func TestStmtTraitUse_Adaptions(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{ + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 78, + EndPos: 29, }, - OpenCurlyBracketTkn: &token.Token{ - ID: token.ID(123), - Value: []byte("{"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 28, - EndPos: 29, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 27, - EndPos: 28, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, }, }, }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUsePrecedence{ + }, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUsePrecedence{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 58, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 58, + EndPos: 38, }, - Ref: &ast.StmtTraitMethodRef{ + Trait: &ast.NameName{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, - EndPos: 38, + EndPos: 33, }, - Trait: &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 33, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Bar"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 30, EndPos: 33, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Bar"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 30, - EndPos: 33, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 29, - EndPos: 30, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, }, }, }, - Value: []byte("Bar"), }, + Value: []byte("Bar"), }, }, - DoubleColonTkn: &token.Token{ - ID: token.T_PAAMAYIM_NEKUDOTAYIM, - Value: []byte("::"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 33, - EndPos: 35, - }, + }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 35, }, - Method: &ast.Identifier{ + }, + Method: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 35, + EndPos: 38, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 35, EndPos: 38, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 35, - EndPos: 38, - }, - }, - Value: []byte("one"), }, + Value: []byte("one"), }, - InsteadofTkn: &token.Token{ - ID: token.T_INSTEADOF, - Value: []byte("insteadof"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 39, - EndPos: 48, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 38, - EndPos: 39, - }, - }, - }, + }, + InsteadofTkn: &token.Token{ + ID: token.T_INSTEADOF, + Value: []byte("insteadof"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 39, + EndPos: 48, }, - Insteadof: []ast.Vertex{ - &ast.NameName{ + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 49, - EndPos: 52, + StartPos: 38, + EndPos: 39, }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + }, + }, + }, + Insteadof: []ast.Vertex{ + &ast.NameName{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 52, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 49, + EndPos: 52, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Baz"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 49, EndPos: 52, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Baz"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 49, - EndPos: 52, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 48, - EndPos: 49, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 48, + EndPos: 49, }, }, }, - Value: []byte("Baz"), }, + Value: []byte("Baz"), }, }, - &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 54, - EndPos: 58, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + }, + &ast.NameName{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 54, + EndPos: 58, + }, + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 54, + EndPos: 58, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Quux"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 54, EndPos: 58, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Quux"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 54, - EndPos: 58, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 53, - EndPos: 54, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 53, + EndPos: 54, }, }, }, - Value: []byte("Quux"), }, + Value: []byte("Quux"), }, }, }, - SeparatorTkns: []*token.Token{ - { - ID: token.ID(44), - Value: []byte(","), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 52, - EndPos: 53, - }, - }, - }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 58, - EndPos: 59, - }, - }, }, - &ast.StmtTraitUseAlias{ + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 52, + EndPos: 53, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 58, + EndPos: 59, + }, + }, + }, + &ast.StmtTraitUseAlias{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 60, + EndPos: 75, + }, + Ref: &ast.StmtTraitMethodRef{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, - EndPos: 75, + EndPos: 68, }, - Ref: &ast.StmtTraitMethodRef{ + Trait: &ast.NameName{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, - EndPos: 68, + EndPos: 63, }, - Trait: &ast.NameName{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 60, - EndPos: 63, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 60, + EndPos: 63, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("Baz"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 60, EndPos: 63, }, - StringTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("Baz"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 60, - EndPos: 63, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 59, - EndPos: 60, - }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 59, + EndPos: 60, }, }, }, - Value: []byte("Baz"), }, + Value: []byte("Baz"), }, }, - DoubleColonTkn: &token.Token{ - ID: token.T_PAAMAYIM_NEKUDOTAYIM, - Value: []byte("::"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 63, - EndPos: 65, - }, + }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 63, + EndPos: 65, }, - Method: &ast.Identifier{ + }, + Method: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 65, + EndPos: 68, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("one"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 65, EndPos: 68, }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("one"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 65, - EndPos: 68, - }, + }, + Value: []byte("one"), + }, + }, + AsTkn: &token.Token{ + ID: token.T_AS, + Value: []byte("as"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 69, + EndPos: 71, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 68, + EndPos: 69, }, - Value: []byte("one"), }, }, - AsTkn: &token.Token{ - ID: token.T_AS, - Value: []byte("as"), + }, + Alias: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 72, + EndPos: 75, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("two"), Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 69, - EndPos: 71, + StartPos: 72, + EndPos: 75, }, FreeFloating: []*token.Token{ { @@ -27324,74 +27306,44 @@ func TestStmtTraitUse_Adaptions(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 68, - EndPos: 69, + StartPos: 71, + EndPos: 72, }, }, }, }, - Alias: &ast.Identifier{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 72, - EndPos: 75, - }, - IdentifierTkn: &token.Token{ - ID: token.T_STRING, - Value: []byte("two"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 72, - EndPos: 75, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 71, - EndPos: 72, - }, - }, - }, - }, - Value: []byte("two"), - }, - SemiColonTkn: &token.Token{ - ID: token.ID(59), - Value: []byte(";"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 75, - EndPos: 76, - }, + Value: []byte("two"), + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 75, + EndPos: 76, }, }, }, - CloseCurlyBracketTkn: &token.Token{ - ID: token.ID(125), - Value: []byte("}"), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 77, - EndPos: 78, - }, - FreeFloating: []*token.Token{ - { - ID: token.T_WHITESPACE, - Value: []byte(" "), - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 76, - EndPos: 77, - }, + }, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 77, + EndPos: 78, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 76, + EndPos: 77, }, }, }, diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 82fd500..3c139f2 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -339,7 +339,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4332 +// line internal/php7/php7.y:4342 // line yacctab:1 var yyExca = [...]int{ @@ -4381,17 +4381,27 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] // line internal/php7/php7.y:1972 { - yyVAL.node = &ast.StmtTraitUse{ + traitUse := &ast.StmtTraitUse{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), UseTkn: yyDollar[1].token, Traits: yyDollar[2].node.(*ast.ParserSeparatedList).Items, SeparatorTkns: yyDollar[2].node.(*ast.ParserSeparatedList).SeparatorTkns, - Adaptations: yyDollar[3].node, } + + switch n := yyDollar[3].node.(type) { + case *ast.TraitAdaptationList: + traitUse.OpenCurlyBracketTkn = n.OpenCurlyBracketTkn + traitUse.Adaptations = n.Adaptations + traitUse.CloseCurlyBracketTkn = n.CloseCurlyBracketTkn + case *ast.StmtNop: + traitUse.SemiColonTkn = n.SemiColonTkn + } + + yyVAL.node = traitUse } case 246: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php7/php7.y:1982 + // line internal/php7/php7.y:1992 { pos := yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node) if yyDollar[1].list != nil { @@ -4419,7 +4429,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2011 + // line internal/php7/php7.y:2021 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4427,7 +4437,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2017 + // line internal/php7/php7.y:2027 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4436,7 +4446,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2027 + // line internal/php7/php7.y:2037 { yyVAL.node = &ast.StmtNop{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4445,9 +4455,9 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2034 + // line internal/php7/php7.y:2044 { - yyVAL.node = &ast.StmtTraitAdaptationList{ + yyVAL.node = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), OpenCurlyBracketTkn: yyDollar[1].token, CloseCurlyBracketTkn: yyDollar[2].token, @@ -4455,9 +4465,9 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2042 + // line internal/php7/php7.y:2052 { - yyVAL.node = &ast.StmtTraitAdaptationList{ + yyVAL.node = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), OpenCurlyBracketTkn: yyDollar[1].token, Adaptations: yyDollar[2].list, @@ -4466,19 +4476,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2054 + // line internal/php7/php7.y:2064 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2058 + // line internal/php7/php7.y:2068 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2065 + // line internal/php7/php7.y:2075 { yyDollar[1].node.(*ast.StmtTraitUsePrecedence).SemiColonTkn = yyDollar[2].token @@ -4486,7 +4496,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2071 + // line internal/php7/php7.y:2081 { yyDollar[1].node.(*ast.StmtTraitUseAlias).SemiColonTkn = yyDollar[2].token @@ -4494,7 +4504,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2080 + // line internal/php7/php7.y:2090 { yyVAL.node = &ast.StmtTraitUsePrecedence{ Position: yylex.(*Parser).builder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -4506,7 +4516,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2093 + // line internal/php7/php7.y:2103 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -4521,7 +4531,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2106 + // line internal/php7/php7.y:2116 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -4536,7 +4546,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2119 + // line internal/php7/php7.y:2129 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -4552,7 +4562,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2133 + // line internal/php7/php7.y:2143 { yyVAL.node = &ast.StmtTraitUseAlias{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -4563,7 +4573,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2145 + // line internal/php7/php7.y:2155 { yyVAL.node = &ast.StmtTraitMethodRef{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4576,13 +4586,13 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2156 + // line internal/php7/php7.y:2166 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2163 + // line internal/php7/php7.y:2173 { yyVAL.node = &ast.StmtTraitMethodRef{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -4597,7 +4607,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2179 + // line internal/php7/php7.y:2189 { yyVAL.node = &ast.StmtNop{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4606,7 +4616,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2186 + // line internal/php7/php7.y:2196 { yyVAL.node = &ast.StmtStmtList{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -4617,13 +4627,13 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2198 + // line internal/php7/php7.y:2208 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2202 + // line internal/php7/php7.y:2212 { yyVAL.list = []ast.Vertex{ &ast.Identifier{ @@ -4635,31 +4645,31 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2215 + // line internal/php7/php7.y:2225 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2219 + // line internal/php7/php7.y:2229 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2226 + // line internal/php7/php7.y:2236 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2230 + // line internal/php7/php7.y:2240 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2237 + // line internal/php7/php7.y:2247 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4669,7 +4679,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2245 + // line internal/php7/php7.y:2255 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4679,7 +4689,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2253 + // line internal/php7/php7.y:2263 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4689,7 +4699,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2261 + // line internal/php7/php7.y:2271 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4699,7 +4709,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2269 + // line internal/php7/php7.y:2279 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4709,7 +4719,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2277 + // line internal/php7/php7.y:2287 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4719,7 +4729,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2288 + // line internal/php7/php7.y:2298 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4728,7 +4738,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2295 + // line internal/php7/php7.y:2305 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4736,7 +4746,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2304 + // line internal/php7/php7.y:2314 { yyVAL.node = &ast.StmtProperty{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -4753,7 +4763,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2319 + // line internal/php7/php7.y:2329 { yyVAL.node = &ast.StmtProperty{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), @@ -4771,7 +4781,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2338 + // line internal/php7/php7.y:2348 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4780,7 +4790,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2345 + // line internal/php7/php7.y:2355 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4788,7 +4798,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2354 + // line internal/php7/php7.y:2364 { yyVAL.node = &ast.StmtConstant{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), @@ -4803,7 +4813,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2370 + // line internal/php7/php7.y:2380 { yyVAL.node = &ast.StmtConstant{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), @@ -4818,7 +4828,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2386 + // line internal/php7/php7.y:2396 { yyDollar[1].node.(*ast.StmtEcho).Exprs = append(yyDollar[1].node.(*ast.StmtEcho).Exprs, yyDollar[3].node) yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns, yyDollar[2].token) @@ -4827,7 +4837,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2393 + // line internal/php7/php7.y:2403 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -4835,25 +4845,25 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2402 + // line internal/php7/php7.y:2412 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2409 + // line internal/php7/php7.y:2419 { yyVAL.node = &ast.ParserSeparatedList{} } case 290: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2413 + // line internal/php7/php7.y:2423 { yyVAL.node = yyDollar[1].node } case 291: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2420 + // line internal/php7/php7.y:2430 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -4862,7 +4872,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2427 + // line internal/php7/php7.y:2437 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4870,7 +4880,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:2436 + // line internal/php7/php7.y:2446 { yyVAL.node = &ast.StmtClass{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token), @@ -4888,7 +4898,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2455 + // line internal/php7/php7.y:2465 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ @@ -4910,7 +4920,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2475 + // line internal/php7/php7.y:2485 { yyVAL.node = &ast.ExprNew{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -4920,7 +4930,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2486 + // line internal/php7/php7.y:2496 { yyVAL.node = &ast.ExprAssign{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node), @@ -4938,7 +4948,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:2502 + // line internal/php7/php7.y:2512 { yyVAL.node = &ast.ExprAssign{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node), @@ -4955,7 +4965,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2517 + // line internal/php7/php7.y:2527 { yyVAL.node = &ast.ExprAssign{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -4966,7 +4976,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2526 + // line internal/php7/php7.y:2536 { yyVAL.node = &ast.ExprAssignReference{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -4978,7 +4988,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2536 + // line internal/php7/php7.y:2546 { yyVAL.node = &ast.ExprClone{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -4988,7 +4998,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2544 + // line internal/php7/php7.y:2554 { yyVAL.node = &ast.ExprAssignPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -4999,7 +5009,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2553 + // line internal/php7/php7.y:2563 { yyVAL.node = &ast.ExprAssignMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5010,7 +5020,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2562 + // line internal/php7/php7.y:2572 { yyVAL.node = &ast.ExprAssignMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5021,7 +5031,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2571 + // line internal/php7/php7.y:2581 { yyVAL.node = &ast.ExprAssignPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5032,7 +5042,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2580 + // line internal/php7/php7.y:2590 { yyVAL.node = &ast.ExprAssignDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5043,7 +5053,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2589 + // line internal/php7/php7.y:2599 { yyVAL.node = &ast.ExprAssignConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5054,7 +5064,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2598 + // line internal/php7/php7.y:2608 { yyVAL.node = &ast.ExprAssignMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5065,7 +5075,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2607 + // line internal/php7/php7.y:2617 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5076,7 +5086,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2616 + // line internal/php7/php7.y:2626 { yyVAL.node = &ast.ExprAssignBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5087,7 +5097,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2625 + // line internal/php7/php7.y:2635 { yyVAL.node = &ast.ExprAssignBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5098,7 +5108,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2634 + // line internal/php7/php7.y:2644 { yyVAL.node = &ast.ExprAssignShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5109,7 +5119,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2643 + // line internal/php7/php7.y:2653 { yyVAL.node = &ast.ExprAssignShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5120,7 +5130,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2652 + // line internal/php7/php7.y:2662 { yyVAL.node = &ast.ExprAssignCoalesce{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5131,7 +5141,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2661 + // line internal/php7/php7.y:2671 { yyVAL.node = &ast.ExprPostInc{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token), @@ -5141,7 +5151,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2669 + // line internal/php7/php7.y:2679 { yyVAL.node = &ast.ExprPreInc{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5151,7 +5161,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2677 + // line internal/php7/php7.y:2687 { yyVAL.node = &ast.ExprPostDec{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token), @@ -5161,7 +5171,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2685 + // line internal/php7/php7.y:2695 { yyVAL.node = &ast.ExprPreDec{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5171,7 +5181,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2693 + // line internal/php7/php7.y:2703 { yyVAL.node = &ast.ExprBinaryBooleanOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5182,7 +5192,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2702 + // line internal/php7/php7.y:2712 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5193,7 +5203,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2711 + // line internal/php7/php7.y:2721 { yyVAL.node = &ast.ExprBinaryLogicalOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5204,7 +5214,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2720 + // line internal/php7/php7.y:2730 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5215,7 +5225,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2729 + // line internal/php7/php7.y:2739 { yyVAL.node = &ast.ExprBinaryLogicalXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5226,7 +5236,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2738 + // line internal/php7/php7.y:2748 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5237,7 +5247,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2747 + // line internal/php7/php7.y:2757 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5248,7 +5258,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2756 + // line internal/php7/php7.y:2766 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5259,7 +5269,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2765 + // line internal/php7/php7.y:2775 { yyVAL.node = &ast.ExprBinaryConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5270,7 +5280,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2774 + // line internal/php7/php7.y:2784 { yyVAL.node = &ast.ExprBinaryPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5281,7 +5291,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2783 + // line internal/php7/php7.y:2793 { yyVAL.node = &ast.ExprBinaryMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5292,7 +5302,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2792 + // line internal/php7/php7.y:2802 { yyVAL.node = &ast.ExprBinaryMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5303,7 +5313,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2801 + // line internal/php7/php7.y:2811 { yyVAL.node = &ast.ExprBinaryPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5314,7 +5324,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2810 + // line internal/php7/php7.y:2820 { yyVAL.node = &ast.ExprBinaryDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5325,7 +5335,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2819 + // line internal/php7/php7.y:2829 { yyVAL.node = &ast.ExprBinaryMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5336,7 +5346,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2828 + // line internal/php7/php7.y:2838 { yyVAL.node = &ast.ExprBinaryShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5347,7 +5357,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2837 + // line internal/php7/php7.y:2847 { yyVAL.node = &ast.ExprBinaryShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5358,7 +5368,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2846 + // line internal/php7/php7.y:2856 { yyVAL.node = &ast.ExprUnaryPlus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5368,7 +5378,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2854 + // line internal/php7/php7.y:2864 { yyVAL.node = &ast.ExprUnaryMinus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5378,7 +5388,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2862 + // line internal/php7/php7.y:2872 { yyVAL.node = &ast.ExprBooleanNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5388,7 +5398,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2870 + // line internal/php7/php7.y:2880 { yyVAL.node = &ast.ExprBitwiseNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5398,7 +5408,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2878 + // line internal/php7/php7.y:2888 { yyVAL.node = &ast.ExprBinaryIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5409,7 +5419,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2887 + // line internal/php7/php7.y:2897 { yyVAL.node = &ast.ExprBinaryNotIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5420,7 +5430,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2896 + // line internal/php7/php7.y:2906 { yyVAL.node = &ast.ExprBinaryEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5431,7 +5441,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2905 + // line internal/php7/php7.y:2915 { yyVAL.node = &ast.ExprBinaryNotEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5442,7 +5452,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2914 + // line internal/php7/php7.y:2924 { yyVAL.node = &ast.ExprBinarySmaller{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5453,7 +5463,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2923 + // line internal/php7/php7.y:2933 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5464,7 +5474,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2932 + // line internal/php7/php7.y:2942 { yyVAL.node = &ast.ExprBinaryGreater{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5475,7 +5485,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2941 + // line internal/php7/php7.y:2951 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5486,7 +5496,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2950 + // line internal/php7/php7.y:2960 { yyVAL.node = &ast.ExprBinarySpaceship{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5497,7 +5507,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2959 + // line internal/php7/php7.y:2969 { yyVAL.node = &ast.ExprInstanceOf{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5508,7 +5518,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2968 + // line internal/php7/php7.y:2978 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5519,13 +5529,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2977 + // line internal/php7/php7.y:2987 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:2981 + // line internal/php7/php7.y:2991 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), @@ -5538,7 +5548,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2992 + // line internal/php7/php7.y:3002 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -5550,7 +5560,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3002 + // line internal/php7/php7.y:3012 { yyVAL.node = &ast.ExprBinaryCoalesce{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -5561,13 +5571,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3011 + // line internal/php7/php7.y:3021 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3015 + // line internal/php7/php7.y:3025 { yyVAL.node = &ast.ExprCastInt{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5577,7 +5587,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3023 + // line internal/php7/php7.y:3033 { yyVAL.node = &ast.ExprCastDouble{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5587,7 +5597,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3031 + // line internal/php7/php7.y:3041 { yyVAL.node = &ast.ExprCastString{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5597,7 +5607,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3039 + // line internal/php7/php7.y:3049 { yyVAL.node = &ast.ExprCastArray{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5607,7 +5617,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3047 + // line internal/php7/php7.y:3057 { yyVAL.node = &ast.ExprCastObject{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5617,7 +5627,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3055 + // line internal/php7/php7.y:3065 { yyVAL.node = &ast.ExprCastBool{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5627,7 +5637,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3063 + // line internal/php7/php7.y:3073 { yyVAL.node = &ast.ExprCastUnset{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5637,7 +5647,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3071 + // line internal/php7/php7.y:3081 { exit := &ast.ExprExit{ DieTkn: yyDollar[1].token, @@ -5656,7 +5666,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3088 + // line internal/php7/php7.y:3098 { yyVAL.node = &ast.ExprErrorSuppress{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5666,13 +5676,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3096 + // line internal/php7/php7.y:3106 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3100 + // line internal/php7/php7.y:3110 { yyVAL.node = &ast.ExprShellExec{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5683,7 +5693,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3109 + // line internal/php7/php7.y:3119 { yyVAL.node = &ast.ExprPrint{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5693,7 +5703,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3117 + // line internal/php7/php7.y:3127 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -5702,7 +5712,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3124 + // line internal/php7/php7.y:3134 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5712,7 +5722,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3132 + // line internal/php7/php7.y:3142 { yyVAL.node = &ast.ExprYield{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), @@ -5724,7 +5734,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3142 + // line internal/php7/php7.y:3152 { yyVAL.node = &ast.ExprYieldFrom{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -5734,13 +5744,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3150 + // line internal/php7/php7.y:3160 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3154 + // line internal/php7/php7.y:3164 { switch n := yyDollar[2].node.(type) { case *ast.ExprClosure: @@ -5755,7 +5765,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:3170 + // line internal/php7/php7.y:3180 { yyVAL.node = &ast.ExprClosure{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token), @@ -5775,7 +5785,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:3188 + // line internal/php7/php7.y:3198 { yyVAL.node = &ast.ExprArrowFunction{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node), @@ -5793,25 +5803,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3211 + // line internal/php7/php7.y:3221 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3215 + // line internal/php7/php7.y:3225 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3222 + // line internal/php7/php7.y:3232 { yyVAL.node = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3226 + // line internal/php7/php7.y:3236 { yyVAL.node = &ast.ExprClosureUse{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -5824,7 +5834,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3240 + // line internal/php7/php7.y:3250 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -5833,7 +5843,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3247 + // line internal/php7/php7.y:3257 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -5841,7 +5851,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3256 + // line internal/php7/php7.y:3266 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -5854,7 +5864,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3267 + // line internal/php7/php7.y:3277 { yyVAL.node = &ast.ExprReference{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -5871,7 +5881,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3285 + // line internal/php7/php7.y:3295 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), @@ -5884,7 +5894,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3296 + // line internal/php7/php7.y:3306 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -5899,7 +5909,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3309 + // line internal/php7/php7.y:3319 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -5914,7 +5924,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3322 + // line internal/php7/php7.y:3332 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), @@ -5927,7 +5937,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3336 + // line internal/php7/php7.y:3346 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -5937,31 +5947,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3344 + // line internal/php7/php7.y:3354 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3351 + // line internal/php7/php7.y:3361 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3355 + // line internal/php7/php7.y:3365 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3362 + // line internal/php7/php7.y:3372 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3366 + // line internal/php7/php7.y:3376 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5972,13 +5982,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3378 + // line internal/php7/php7.y:3388 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3382 + // line internal/php7/php7.y:3392 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -5990,25 +6000,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3392 + // line internal/php7/php7.y:3402 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3399 + // line internal/php7/php7.y:3409 { yyVAL.node = &ast.ArgumentList{} } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3403 + // line internal/php7/php7.y:3413 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3410 + // line internal/php7/php7.y:3420 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6021,7 +6031,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3421 + // line internal/php7/php7.y:3431 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6033,7 +6043,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3431 + // line internal/php7/php7.y:3441 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6043,7 +6053,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3442 + // line internal/php7/php7.y:3452 { yyVAL.node = &ast.ScalarLnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6053,7 +6063,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3450 + // line internal/php7/php7.y:3460 { yyVAL.node = &ast.ScalarDnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6063,7 +6073,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3458 + // line internal/php7/php7.y:3468 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6073,7 +6083,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3466 + // line internal/php7/php7.y:3476 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6083,7 +6093,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3474 + // line internal/php7/php7.y:3484 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6093,7 +6103,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3482 + // line internal/php7/php7.y:3492 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6103,7 +6113,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3490 + // line internal/php7/php7.y:3500 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6113,7 +6123,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3498 + // line internal/php7/php7.y:3508 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6123,7 +6133,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3506 + // line internal/php7/php7.y:3516 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6133,7 +6143,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3514 + // line internal/php7/php7.y:3524 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6143,7 +6153,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3522 + // line internal/php7/php7.y:3532 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6160,7 +6170,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3537 + // line internal/php7/php7.y:3547 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6170,7 +6180,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3545 + // line internal/php7/php7.y:3555 { yyVAL.node = &ast.ScalarEncapsed{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6181,7 +6191,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3554 + // line internal/php7/php7.y:3564 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6192,19 +6202,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3563 + // line internal/php7/php7.y:3573 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3567 + // line internal/php7/php7.y:3577 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3574 + // line internal/php7/php7.y:3584 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -6213,7 +6223,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3581 + // line internal/php7/php7.y:3591 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6228,7 +6238,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3594 + // line internal/php7/php7.y:3604 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6243,43 +6253,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3610 + // line internal/php7/php7.y:3620 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3614 + // line internal/php7/php7.y:3624 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3621 + // line internal/php7/php7.y:3631 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3625 + // line internal/php7/php7.y:3635 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3632 + // line internal/php7/php7.y:3642 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3639 + // line internal/php7/php7.y:3649 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3643 + // line internal/php7/php7.y:3653 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6290,19 +6300,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3652 + // line internal/php7/php7.y:3662 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3659 + // line internal/php7/php7.y:3669 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3663 + // line internal/php7/php7.y:3673 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6313,29 +6323,17 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3672 + // line internal/php7/php7.y:3682 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3679 + // line internal/php7/php7.y:3689 { yyVAL.node = yyDollar[1].node } case 433: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3683 - { - yyVAL.node = &ast.ExprArrayDimFetch{ - Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), - Var: yyDollar[1].node, - OpenBracketTkn: yyDollar[2].token, - Dim: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, - } - } - case 434: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3693 { @@ -6347,7 +6345,7 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } - case 435: + case 434: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3703 { @@ -6359,9 +6357,21 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } - case 436: + case 435: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3713 + { + yyVAL.node = &ast.ExprArrayDimFetch{ + Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + } + case 436: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php7/php7.y:3723 { yyVAL.node = &ast.ExprMethodCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6376,25 +6386,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3726 + // line internal/php7/php7.y:3736 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3733 + // line internal/php7/php7.y:3743 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3737 + // line internal/php7/php7.y:3747 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3741 + // line internal/php7/php7.y:3751 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6405,7 +6415,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3753 + // line internal/php7/php7.y:3763 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6418,7 +6428,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3764 + // line internal/php7/php7.y:3774 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6433,7 +6443,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3777 + // line internal/php7/php7.y:3787 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6443,7 +6453,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3788 + // line internal/php7/php7.y:3798 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6454,7 +6464,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3797 + // line internal/php7/php7.y:3807 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6465,23 +6475,11 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3809 + // line internal/php7/php7.y:3819 { yyVAL.node = yyDollar[1].node } case 447: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3813 - { - yyVAL.node = &ast.ExprArrayDimFetch{ - Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), - Var: yyDollar[1].node, - OpenBracketTkn: yyDollar[2].token, - Dim: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, - } - } - case 448: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3823 { @@ -6493,9 +6491,21 @@ yydefault: CloseBracketTkn: yyDollar[4].token, } } + case 448: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php7/php7.y:3833 + { + yyVAL.node = &ast.ExprArrayDimFetch{ + Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3833 + // line internal/php7/php7.y:3843 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6506,7 +6516,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3842 + // line internal/php7/php7.y:3852 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6517,7 +6527,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3851 + // line internal/php7/php7.y:3861 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6528,7 +6538,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3863 + // line internal/php7/php7.y:3873 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6538,7 +6548,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3871 + // line internal/php7/php7.y:3881 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6549,13 +6559,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3880 + // line internal/php7/php7.y:3890 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3887 + // line internal/php7/php7.y:3897 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6565,7 +6575,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3895 + // line internal/php7/php7.y:3905 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6576,13 +6586,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3904 + // line internal/php7/php7.y:3914 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3911 + // line internal/php7/php7.y:3921 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -6595,19 +6605,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3925 + // line internal/php7/php7.y:3935 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3929 + // line internal/php7/php7.y:3939 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3936 + // line internal/php7/php7.y:3946 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -6616,7 +6626,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3943 + // line internal/php7/php7.y:3953 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -6624,7 +6634,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3952 + // line internal/php7/php7.y:3962 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6635,7 +6645,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3961 + // line internal/php7/php7.y:3971 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -6644,7 +6654,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3968 + // line internal/php7/php7.y:3978 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6659,7 +6669,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3981 + // line internal/php7/php7.y:3991 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6672,7 +6682,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3992 + // line internal/php7/php7.y:4002 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6682,7 +6692,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4000 + // line internal/php7/php7.y:4010 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token), @@ -6700,7 +6710,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4016 + // line internal/php7/php7.y:4026 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6716,13 +6726,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4033 + // line internal/php7/php7.y:4043 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4037 + // line internal/php7/php7.y:4047 { yyVAL.list = append( yyDollar[1].list, @@ -6735,13 +6745,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4048 + // line internal/php7/php7.y:4058 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4052 + // line internal/php7/php7.y:4062 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6754,7 +6764,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4066 + // line internal/php7/php7.y:4076 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6767,7 +6777,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4077 + // line internal/php7/php7.y:4087 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6786,7 +6796,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4094 + // line internal/php7/php7.y:4104 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6808,7 +6818,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4114 + // line internal/php7/php7.y:4124 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6822,7 +6832,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4126 + // line internal/php7/php7.y:4136 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6840,7 +6850,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4142 + // line internal/php7/php7.y:4152 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), @@ -6864,7 +6874,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4164 + // line internal/php7/php7.y:4174 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6875,7 +6885,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4176 + // line internal/php7/php7.y:4186 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6885,7 +6895,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4184 + // line internal/php7/php7.y:4194 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -6904,7 +6914,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4201 + // line internal/php7/php7.y:4211 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -6930,7 +6940,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4225 + // line internal/php7/php7.y:4235 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6943,7 +6953,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4239 + // line internal/php7/php7.y:4249 { if yyDollar[4].token != nil { yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) @@ -6960,7 +6970,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4254 + // line internal/php7/php7.y:4264 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6972,7 +6982,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4264 + // line internal/php7/php7.y:4274 { yyVAL.node = &ast.ExprInclude{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6982,7 +6992,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4272 + // line internal/php7/php7.y:4282 { yyVAL.node = &ast.ExprIncludeOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6992,7 +7002,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4280 + // line internal/php7/php7.y:4290 { yyVAL.node = &ast.ExprEval{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7004,7 +7014,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4290 + // line internal/php7/php7.y:4300 { yyVAL.node = &ast.ExprRequire{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7014,7 +7024,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4298 + // line internal/php7/php7.y:4308 { yyVAL.node = &ast.ExprRequireOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7024,7 +7034,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4309 + // line internal/php7/php7.y:4319 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7032,7 +7042,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4315 + // line internal/php7/php7.y:4325 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -7041,7 +7051,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4325 + // line internal/php7/php7.y:4335 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 2c14cff..00582e4 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1970,13 +1970,23 @@ class_statement: } | T_USE name_list trait_adaptations { - $$ = &ast.StmtTraitUse{ + traitUse := &ast.StmtTraitUse{ Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $3), UseTkn: $1, Traits: $2.(*ast.ParserSeparatedList).Items, SeparatorTkns: $2.(*ast.ParserSeparatedList).SeparatorTkns, - Adaptations: $3, } + + switch n := $3.(type) { + case *ast.TraitAdaptationList : + traitUse.OpenCurlyBracketTkn = n.OpenCurlyBracketTkn + traitUse.Adaptations = n.Adaptations + traitUse.CloseCurlyBracketTkn = n.CloseCurlyBracketTkn + case *ast.StmtNop : + traitUse.SemiColonTkn = n.SemiColonTkn + }; + + $$ = traitUse } | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body { @@ -2032,7 +2042,7 @@ trait_adaptations: } | '{' '}' { - $$ = &ast.StmtTraitAdaptationList{ + $$ = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition($1, $2), OpenCurlyBracketTkn: $1, CloseCurlyBracketTkn: $2, @@ -2040,7 +2050,7 @@ trait_adaptations: } | '{' trait_adaptation_list '}' { - $$ = &ast.StmtTraitAdaptationList{ + $$ = &ast.TraitAdaptationList{ Position: yylex.(*Parser).builder.NewTokensPosition($1, $3), OpenCurlyBracketTkn: $1, Adaptations: $2, diff --git a/pkg/ast/ast.go b/pkg/ast/ast.go index fad100c..0cdb4b0 100644 --- a/pkg/ast/ast.go +++ b/pkg/ast/ast.go @@ -67,7 +67,6 @@ type NodeVisitor interface { StmtSwitch(n *StmtSwitch) StmtThrow(n *StmtThrow) StmtTrait(n *StmtTrait) - StmtTraitAdaptationList(n *StmtTraitAdaptationList) StmtTraitMethodRef(n *StmtTraitMethodRef) StmtTraitUse(n *StmtTraitUse) StmtTraitUseAlias(n *StmtTraitUseAlias) diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 7497f9a..3e3e428 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -945,22 +945,6 @@ func (n *StmtTrait) GetPosition() *position.Position { return n.Position } -// StmtTraitAdaptationList node -type StmtTraitAdaptationList struct { - Position *position.Position - OpenCurlyBracketTkn *token.Token - Adaptations []Vertex - CloseCurlyBracketTkn *token.Token -} - -func (n *StmtTraitAdaptationList) Accept(v NodeVisitor) { - v.StmtTraitAdaptationList(n) -} - -func (n *StmtTraitAdaptationList) GetPosition() *position.Position { - return n.Position -} - // StmtTraitMethodRef node type StmtTraitMethodRef struct { Position *position.Position @@ -979,11 +963,14 @@ func (n *StmtTraitMethodRef) GetPosition() *position.Position { // StmtTraitUse node type StmtTraitUse struct { - Position *position.Position - UseTkn *token.Token - Traits []Vertex - SeparatorTkns []*token.Token - Adaptations Vertex + Position *position.Position + UseTkn *token.Token + Traits []Vertex + SeparatorTkns []*token.Token + OpenCurlyBracketTkn *token.Token + Adaptations []Vertex + CloseCurlyBracketTkn *token.Token + SemiColonTkn *token.Token } func (n *StmtTraitUse) Accept(v NodeVisitor) { @@ -2699,6 +2686,22 @@ func (n *ParserSeparatedList) GetPosition() *position.Position { return n.Position } +// TraitAdaptationList node +type TraitAdaptationList struct { + Position *position.Position + OpenCurlyBracketTkn *token.Token + Adaptations []Vertex + CloseCurlyBracketTkn *token.Token +} + +func (n *TraitAdaptationList) Accept(v NodeVisitor) { + // do nothing +} + +func (n *TraitAdaptationList) GetPosition() *position.Position { + return n.Position +} + // ArgumentList node type ArgumentList struct { Position *position.Position diff --git a/pkg/ast/traverser/dfs.go b/pkg/ast/traverser/dfs.go index d9e198e..f980c7f 100644 --- a/pkg/ast/traverser/dfs.go +++ b/pkg/ast/traverser/dfs.go @@ -812,20 +812,6 @@ func (t *DFS) Traverse(n ast.Vertex) { } t.visitor.Leave("Stmts", false) } - case *ast.StmtTraitAdaptationList: - if nn == nil { - return - } - if !t.visitor.EnterNode(nn) { - return - } - if nn.Adaptations != nil { - t.visitor.Enter("Adaptations", false) - for _, c := range nn.Adaptations { - t.Traverse(c) - } - t.visitor.Leave("Adaptations", false) - } case *ast.StmtTraitMethodRef: if nn == nil { return @@ -858,9 +844,11 @@ func (t *DFS) Traverse(n ast.Vertex) { t.visitor.Leave("Traits", false) } if nn.Adaptations != nil { - t.visitor.Enter("Adaptations", true) - t.Traverse(nn.Adaptations) - t.visitor.Leave("Adaptations", true) + t.visitor.Enter("Adaptations", false) + for _, c := range nn.Adaptations { + t.Traverse(c) + } + t.visitor.Leave("Adaptations", false) } case *ast.StmtTraitUseAlias: if nn == nil { diff --git a/pkg/ast/visitor/dumper.go b/pkg/ast/visitor/dumper.go index 98ef5ef..c086d47 100644 --- a/pkg/ast/visitor/dumper.go +++ b/pkg/ast/visitor/dumper.go @@ -858,19 +858,6 @@ func (v *Dumper) StmtTrait(n *ast.StmtTrait) { v.print(v.indent, "},\n") } -func (v *Dumper) StmtTraitAdaptationList(n *ast.StmtTraitAdaptationList) { - v.print(0, "&ast.StmtTraitAdaptationList{\n") - v.indent++ - - v.dumpPosition(n.Position) - v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn) - v.dumpVertexList("Adaptations", n.Adaptations) - v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn) - - v.indent-- - v.print(v.indent, "},\n") -} - func (v *Dumper) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) { v.print(0, "&ast.StmtTraitMethodRef{\n") v.indent++ @@ -892,7 +879,10 @@ func (v *Dumper) StmtTraitUse(n *ast.StmtTraitUse) { v.dumpToken("UseTkn", n.UseTkn) v.dumpVertexList("Traits", n.Traits) v.dumpTokenList("SeparatorTkns", n.SeparatorTkns) - v.dumpVertex("Adaptations", n.Adaptations) + v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn) + v.dumpVertexList("Adaptations", n.Adaptations) + v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn) + v.dumpToken("SemiColonTkn", n.SemiColonTkn) v.indent-- v.print(v.indent, "},\n") diff --git a/pkg/ast/visitor/formatter.go b/pkg/ast/visitor/formatter.go index 31b1475..5d2d202 100644 --- a/pkg/ast/visitor/formatter.go +++ b/pkg/ast/visitor/formatter.go @@ -886,21 +886,6 @@ func (f *formatter) StmtTrait(n *ast.StmtTrait) { n.CloseCurlyBracketTkn = f.newToken('}', []byte("}")) } -func (f *formatter) StmtTraitAdaptationList(n *ast.StmtTraitAdaptationList) { - n.OpenCurlyBracketTkn = f.newToken('{', []byte("{")) - - if len(n.Adaptations) > 0 { - f.indent++ - f.formatStmts(&n.Adaptations) - f.indent-- - - f.addFreeFloating(token.T_WHITESPACE, []byte("\n")) - f.addIndent() - } - - n.CloseCurlyBracketTkn = f.newToken('}', []byte("}")) -} - func (f *formatter) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) { if n.Trait != nil { n.Trait.Accept(f) @@ -916,11 +901,27 @@ func (f *formatter) StmtTraitUse(n *ast.StmtTraitUse) { n.SeparatorTkns = f.formatList(n.Traits, ',') - if _, ok := n.Adaptations.(*ast.StmtTraitAdaptationList); ok { - f.addFreeFloating(token.T_WHITESPACE, []byte(" ")) - } + n.OpenCurlyBracketTkn = nil + n.CloseCurlyBracketTkn = nil + n.SemiColonTkn = nil - n.Adaptations.Accept(f) + if len(n.Adaptations) > 0 { + f.addFreeFloating(token.T_WHITESPACE, []byte(" ")) + n.OpenCurlyBracketTkn = f.newToken('{', []byte("{")) + + if len(n.Adaptations) > 0 { + f.indent++ + f.formatStmts(&n.Adaptations) + f.indent-- + + f.addFreeFloating(token.T_WHITESPACE, []byte("\n")) + f.addIndent() + } + + n.CloseCurlyBracketTkn = f.newToken('}', []byte("}")) + } else { + n.SemiColonTkn = f.newToken(';', []byte(";")) + } } func (f *formatter) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) { diff --git a/pkg/ast/visitor/formatter_test.go b/pkg/ast/visitor/formatter_test.go index d4b2c0a..ee8637b 100644 --- a/pkg/ast/visitor/formatter_test.go +++ b/pkg/ast/visitor/formatter_test.go @@ -2503,76 +2503,6 @@ func TestFormatter_StmtTrait_Implements(t *testing.T) { } } -func TestFormatter_StmtTraitAdaptationList(t *testing.T) { - o := bytes.NewBufferString("") - - n := &ast.StmtTraitAdaptationList{} - - f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) - n.Accept(f) - - p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) - n.Accept(p) - - expected := `{}` - actual := o.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} - -func TestFormatter_StmtTraitAdaptationList_List(t *testing.T) { - o := bytes.NewBufferString("") - - n := &ast.StmtTraitAdaptationList{ - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Ref: &ast.StmtTraitMethodRef{ - Method: &ast.Identifier{ - Value: []byte("foo"), - }, - }, - Alias: &ast.Identifier{ - Value: []byte("bar"), - }, - }, - &ast.StmtTraitUsePrecedence{ - Ref: &ast.StmtTraitMethodRef{ - Method: &ast.Identifier{ - Value: []byte("foo"), - }, - }, - Insteadof: []ast.Vertex{ - &ast.NameName{ - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Value: []byte("bar"), - }, - }, - }, - }, - }, - }, - } - - f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) - n.Accept(f) - - p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) - n.Accept(p) - - expected := `{ - foo as bar; - foo insteadof bar; - }` - actual := o.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} - func TestFormatter_StmtTraitMethodRef(t *testing.T) { o := bytes.NewBufferString("") @@ -2646,7 +2576,6 @@ func TestFormatter_StmtTraitUse(t *testing.T) { }, }, }, - Adaptations: &ast.StmtNop{}, } f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) @@ -2683,7 +2612,18 @@ func TestFormatter_StmtTraitUse_Adaptations(t *testing.T) { }, }, }, - Adaptations: &ast.StmtTraitAdaptationList{}, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Ref: &ast.StmtTraitMethodRef{ + Method: &ast.Identifier{ + Value: []byte("foo"), + }, + }, + Alias: &ast.Identifier{ + Value: []byte("baz"), + }, + }, + }, } f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) @@ -2692,7 +2632,9 @@ func TestFormatter_StmtTraitUse_Adaptations(t *testing.T) { p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) n.Accept(p) - expected := `use foo, bar {}` + expected := `use foo, bar { + foo as baz; + }` actual := o.String() if expected != actual { diff --git a/pkg/ast/visitor/namespace_resolver.go b/pkg/ast/visitor/namespace_resolver.go index 5bc82ca..9e4e6a2 100644 --- a/pkg/ast/visitor/namespace_resolver.go +++ b/pkg/ast/visitor/namespace_resolver.go @@ -184,23 +184,21 @@ func (nsr *NamespaceResolver) StmtTraitUse(n *ast.StmtTraitUse) { nsr.ResolveName(t, "") } - if adaptationList, ok := n.Adaptations.(*ast.StmtTraitAdaptationList); ok { - for _, a := range adaptationList.Adaptations { - switch aa := a.(type) { - case *ast.StmtTraitUsePrecedence: - refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait - if refTrait != nil { - nsr.ResolveName(refTrait, "") - } - for _, insteadOf := range aa.Insteadof { - nsr.ResolveName(insteadOf, "") - } + for _, a := range n.Adaptations { + switch aa := a.(type) { + case *ast.StmtTraitUsePrecedence: + refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait + if refTrait != nil { + nsr.ResolveName(refTrait, "") + } + for _, insteadOf := range aa.Insteadof { + nsr.ResolveName(insteadOf, "") + } - case *ast.StmtTraitUseAlias: - refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait - if refTrait != nil { - nsr.ResolveName(refTrait, "") - } + case *ast.StmtTraitUseAlias: + refTrait := aa.Ref.(*ast.StmtTraitMethodRef).Trait + if refTrait != nil { + nsr.ResolveName(refTrait, "") } } } diff --git a/pkg/ast/visitor/namespace_resolver_test.go b/pkg/ast/visitor/namespace_resolver_test.go index fa7043a..f42f11e 100644 --- a/pkg/ast/visitor/namespace_resolver_test.go +++ b/pkg/ast/visitor/namespace_resolver_test.go @@ -354,22 +354,20 @@ func TestResolveTraitUse(t *testing.T) { nameB, relativeNameB, }, - Adaptations: &ast.StmtTraitAdaptationList{ - Adaptations: []ast.Vertex{ - &ast.StmtTraitUsePrecedence{ - Ref: &ast.StmtTraitMethodRef{ - Trait: fullyQualifiedNameB, - Method: &ast.Identifier{Value: []byte("foo")}, - }, - Insteadof: []ast.Vertex{fullyQualifiedNameBC}, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUsePrecedence{ + Ref: &ast.StmtTraitMethodRef{ + Trait: fullyQualifiedNameB, + Method: &ast.Identifier{Value: []byte("foo")}, }, - &ast.StmtTraitUseAlias{ - Ref: &ast.StmtTraitMethodRef{ - Trait: relativeNameBC, - Method: &ast.Identifier{Value: []byte("foo")}, - }, - Alias: &ast.Identifier{Value: []byte("bar")}, + Insteadof: []ast.Vertex{fullyQualifiedNameBC}, + }, + &ast.StmtTraitUseAlias{ + Ref: &ast.StmtTraitMethodRef{ + Trait: relativeNameBC, + Method: &ast.Identifier{Value: []byte("foo")}, }, + Alias: &ast.Identifier{Value: []byte("bar")}, }, }, }, diff --git a/pkg/ast/visitor/null.go b/pkg/ast/visitor/null.go index bba280c..cef3d73 100644 --- a/pkg/ast/visitor/null.go +++ b/pkg/ast/visitor/null.go @@ -206,10 +206,6 @@ func (v *Null) StmtTrait(_ *ast.StmtTrait) { // do nothing } -func (v *Null) StmtTraitAdaptationList(_ *ast.StmtTraitAdaptationList) { - // do nothing -} - func (v *Null) StmtTraitMethodRef(_ *ast.StmtTraitMethodRef) { // do nothing } diff --git a/pkg/ast/visitor/printer.go b/pkg/ast/visitor/printer.go index ae85256..255ffe9 100644 --- a/pkg/ast/visitor/printer.go +++ b/pkg/ast/visitor/printer.go @@ -531,12 +531,6 @@ func (p *printer) StmtTrait(n *ast.StmtTrait) { p.printToken(n.CloseCurlyBracketTkn, []byte("}")) } -func (p *printer) StmtTraitAdaptationList(n *ast.StmtTraitAdaptationList) { - p.printToken(n.OpenCurlyBracketTkn, []byte("{")) - p.printList(n.Adaptations) - p.printToken(n.CloseCurlyBracketTkn, []byte("}")) -} - func (p *printer) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) { p.printNode(n.Trait) p.printToken(n.DoubleColonTkn, p.ifNode(n.Trait, []byte("::"))) @@ -546,7 +540,10 @@ func (p *printer) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) { func (p *printer) StmtTraitUse(n *ast.StmtTraitUse) { p.printToken(n.UseTkn, []byte("use")) p.printSeparatedList(n.Traits, n.SeparatorTkns, []byte(",")) - p.printNode(n.Adaptations) + p.printToken(n.OpenCurlyBracketTkn, p.ifNodeList(n.Adaptations, []byte("{"))) + p.printList(n.Adaptations) + p.printToken(n.CloseCurlyBracketTkn, p.ifNodeList(n.Adaptations, []byte("}"))) + p.printToken(n.SemiColonTkn, p.ifNotToken(n.OpenCurlyBracketTkn, p.ifNotNodeList(n.Adaptations, []byte(";")))) } func (p *printer) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) { diff --git a/pkg/ast/visitor/printer_test.go b/pkg/ast/visitor/printer_test.go index 7920cb2..d918f0a 100644 --- a/pkg/ast/visitor/printer_test.go +++ b/pkg/ast/visitor/printer_test.go @@ -4339,31 +4339,6 @@ func TestPrinterPrintStmtThrow(t *testing.T) { } } -func TestPrinterPrintStmtTraitAdaptationList(t *testing.T) { - o := bytes.NewBufferString("") - - p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) - n := &ast.StmtTraitAdaptationList{ - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Ref: &ast.StmtTraitMethodRef{ - Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, - Method: &ast.Identifier{Value: []byte("a")}, - }, - Alias: &ast.Identifier{Value: []byte("b")}, - }, - }, - } - n.Accept(p) - - expected := `{Foo::a as b;}` - actual := o.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} - func TestPrinterPrintStmtTraitMethodRef(t *testing.T) { o := bytes.NewBufferString("") @@ -4454,7 +4429,6 @@ func TestPrinterPrintStmtTraitUse(t *testing.T) { &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}}, }, - Adaptations: &ast.StmtNop{}, } n.Accept(p) @@ -4475,15 +4449,13 @@ func TestPrinterPrintStmtTraitAdaptations(t *testing.T) { &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}}, }, - Adaptations: &ast.StmtTraitAdaptationList{ - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Ref: &ast.StmtTraitMethodRef{ - Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, - Method: &ast.Identifier{Value: []byte("a")}, - }, - Alias: &ast.Identifier{Value: []byte("b")}, + Adaptations: []ast.Vertex{ + &ast.StmtTraitUseAlias{ + Ref: &ast.StmtTraitMethodRef{ + Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, + Method: &ast.Identifier{Value: []byte("a")}, }, + Alias: &ast.Identifier{Value: []byte("b")}, }, }, }