diff --git a/freefloating/position_string.go b/freefloating/position_string.go new file mode 100644 index 0000000..d10a397 --- /dev/null +++ b/freefloating/position_string.go @@ -0,0 +1,16 @@ +// Code generated by "stringer -type=Position -output ./position_string.go"; DO NOT EDIT. + +package freefloating + +import "strconv" + +const _Position_name = "StartEndSlashColonSemiColonAltEndDollarAmpersandNamePrefixKeyVarUseTypeReturnTypeOptionalTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondHaltCompillerNamespaceStaticClassUseWhileForSwitchBreakForeachDeclareLabelFinallyListDefaultIfElseIfElseVariadicFunctionAliasAsEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndArgumentListPropertyListParameterListAdaptationListLexicalVarListUseDeclarationListOpenParenthesisTokenCloseParenthesisToken" + +var _Position_index = [...]uint16{0, 5, 8, 13, 18, 27, 33, 39, 48, 52, 58, 61, 64, 71, 81, 93, 106, 117, 123, 126, 130, 134, 142, 150, 157, 161, 165, 178, 187, 193, 198, 201, 206, 209, 215, 220, 227, 234, 239, 246, 250, 257, 259, 265, 269, 277, 285, 290, 292, 297, 301, 306, 311, 316, 320, 324, 327, 332, 337, 342, 349, 358, 366, 375, 387, 400, 413, 424, 436, 448, 461, 475, 489, 507, 527, 548} + +func (i Position) String() string { + if i < 0 || i >= Position(len(_Position_index)-1) { + return "Position(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _Position_name[_Position_index[i]:_Position_index[i+1]] +} diff --git a/freefloating/string.go b/freefloating/string.go new file mode 100644 index 0000000..be5507f --- /dev/null +++ b/freefloating/string.go @@ -0,0 +1,112 @@ +package freefloating + +import "github.com/z7zmey/php-parser/position" + +type StringType int + +const ( + WhiteSpaceType StringType = iota + CommentType + TokenType +) + +type Position int + +//go:generate stringer -type=Position -output ./position_string.go +const ( + Start Position = iota + End + Slash + Colon + SemiColon + AltEnd + Dollar + Ampersand + Name + Prefix + Key + Var + UseType + ReturnType + OptionalType + CaseSeparator + LexicalVars + Params + Ref + Cast + Expr + InitExpr + CondExpr + IncExpr + True + Cond + + HaltCompiller + Namespace + Static + Class + Use + While + For + Switch + Break + Foreach + Declare + Label + Finally + List + Default + If + ElseIf + Else + Variadic + Function + Alias + As + Equal + Exit + Array + Isset + Empty + Eval + Echo + Try + Catch + Unset + + Stmts + VarList + ConstList + NameList + ParamList + ModifierList + ArrayPairList + CaseListStart + CaseListEnd + ArgumentList + PropertyList + ParameterList + AdaptationList + LexicalVarList + UseDeclarationList + + OpenParenthesisToken + CloseParenthesisToken +) + +type String struct { + StringType StringType + Value string + Position *position.Position +} + +type Collection map[Position][]String + +func (c Collection) IsEmpty() bool { + for _, v := range c { + if len(v) > 0 { + return false + } + } + return true +} diff --git a/meta/collection.go b/meta/collection.go deleted file mode 100644 index 0264283..0000000 --- a/meta/collection.go +++ /dev/null @@ -1,168 +0,0 @@ -package meta - -// Collection of Meta objects -type Collection []*Data - -// SetTokenName sets TokenName for the all elements in the collection -func (mc *Collection) SetTokenName(tn TokenName) *Collection { - for _, m := range *mc { - m.TokenName = tn - } - - return mc -} - -// Push adds elements to the end of an Collection -func (mc *Collection) Push(mm ...*Data) *Collection { - *mc = append(*mc, mm...) - return mc -} - -// Unshift prepends elements to the beginning of an Collection -func (mc *Collection) Unshift(mm ...*Data) *Collection { - *mc = append(mm, *mc...) - return mc -} - -// AppendTo - appends elements of the collection to the end of the target collection -func (mc *Collection) AppendTo(target *Collection) *Collection { - if len(*mc) == 0 { - return mc - } - *target = append(*target, *mc...) - return mc -} - -// PrependTo - prepends elements of the collection to the start of the target collection -func (mc *Collection) PrependTo(target *Collection) *Collection { - if len(*mc) == 0 { - return mc - } - *target = append(*mc, *target...) - return mc -} - -// Cut elements by TokenName -func (mc *Collection) Cut(f Filter) *Collection { - collection := (*mc)[:0] - cutted := Collection{} - - for _, m := range *mc { - if fr := f(m); fr { - cutted = append(cutted, m) - } else { - collection = append(collection, m) - } - } - - *mc = collection - - return &cutted -} - -// FindBy filter -func (mc *Collection) FindBy(f Filter) Collection { - found := Collection{} - - for _, m := range *mc { - if fr := f(m); fr { - found = append(found, m) - } - } - - return found -} - -// Filter function signature -type Filter func(d *Data) bool - -// TokenNameFilter generates filter function that returns true -// if data.TokenName has in the arguments list -func TokenNameFilter(tokenNames ...TokenName) Filter { - return func(d *Data) bool { - for _, tn := range tokenNames { - if d.TokenName == tn { - return true - } - } - return false - } -} - -// TypeFilter generates filter function that returns true -// if data.Type has in the arguments list -func TypeFilter(types ...Type) Filter { - return func(d *Data) bool { - for _, t := range types { - if d.Type == t { - return true - } - } - return false - } -} - -// ValueFilter generates filter function that returns true -// if data.Value has in the arguments list -func ValueFilter(values ...string) Filter { - return func(d *Data) bool { - for _, v := range values { - if d.Value == v { - return true - } - } - return false - } -} - -// AndFilter generates filter function that returns true -// if all given filters return true -func AndFilter(filters ...Filter) Filter { - return func(d *Data) bool { - for _, filter := range filters { - if result := filter(d); !result { - return false - } - } - - return true - } -} - -// OrFilter generates filter function that returns true -// if one of given filters return true -func OrFilter(filters ...Filter) Filter { - return func(d *Data) bool { - for _, filter := range filters { - if result := filter(d); result { - return true - } - } - - return false - } -} - -// NotFilter negates given filter -func NotFilter(f Filter) Filter { - return func(d *Data) bool { - return !f(d) - } -} - -// StopOnFailureFilter always returns false after first failure -func StopOnFailureFilter(f Filter) Filter { - stopFlag := false - return func(d *Data) bool { - if stopFlag == true { - return false - } - - if !f(d) { - stopFlag = true - return false - } - - return true - } -} diff --git a/meta/collection_test.go b/meta/collection_test.go deleted file mode 100644 index 99248ec..0000000 --- a/meta/collection_test.go +++ /dev/null @@ -1,648 +0,0 @@ -package meta_test - -import ( - "reflect" - "testing" - - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/meta" -) - -func TestCollectionSetTokenName(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - baseCollection := meta.Collection{whiteSpace, comment} - - // action - - baseCollection.SetTokenName(meta.OpenParenthesisToken) - - // check - - for _, m := range baseCollection { - if m.TokenName != meta.OpenParenthesisToken { - t.Error("The TokenName must be set for all Meta objects") - } - } -} - -func TestCollectionPush(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - actualCollection := meta.Collection{whiteSpace} - expectedCollection := meta.Collection{whiteSpace, comment} - - // action - - actualCollection.Push(comment) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestCollectionUnshift(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - actualCollection := meta.Collection{comment} - expectedCollection := meta.Collection{whiteSpace, comment} - - // action - - actualCollection.Unshift(whiteSpace) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestCollectionAppendTo(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - actualCollection := meta.Collection{whiteSpace} - expectedCollection := meta.Collection{whiteSpace, comment} - - baseCollection := meta.Collection{comment} - - // action - - baseCollection.AppendTo(&actualCollection) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestEmptyCollectionAppendTo(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - - actualCollection := meta.Collection{whiteSpace} - expectedCollection := meta.Collection{whiteSpace} - - var baseCollection meta.Collection = nil - - // action - - baseCollection.AppendTo(&actualCollection) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestCollectionPrependTo(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - actualCollection := meta.Collection{comment} - expectedCollection := meta.Collection{whiteSpace, comment} - - baseCollection := meta.Collection{whiteSpace} - - // action - - baseCollection.PrependTo(&actualCollection) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestEmptyCollectionPrependTo(t *testing.T) { - - // prepare - - comment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - } - - actualCollection := meta.Collection{comment} - expectedCollection := meta.Collection{comment} - - baseCollection := meta.Collection{} - - // action - - baseCollection.PrependTo(&actualCollection) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } -} - -func TestCollectionCutByTokenName(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{whiteSpace, OpenParenthesisComment, OpenParenthesisToken, CloseParenthesisToken} - - expectedCollection := meta.Collection{whiteSpace, CloseParenthesisToken} - expectedCutCollection := &meta.Collection{OpenParenthesisComment, OpenParenthesisToken} - - // action - - actualCutCollection := actualCollection.Cut( - meta.TokenNameFilter(meta.OpenParenthesisToken), - ) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) { - diff := pretty.Compare(expectedCutCollection, actualCutCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} - -func TestCollectionCutByTokenTypes(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{whiteSpace, OpenParenthesisComment, OpenParenthesisToken, CloseParenthesisToken} - - expectedCollection := meta.Collection{OpenParenthesisToken, CloseParenthesisToken} - expectedCutCollection := &meta.Collection{whiteSpace, OpenParenthesisComment} - - // action - - actualCutCollection := actualCollection.Cut(meta.OrFilter( - meta.TypeFilter(meta.CommentType), - meta.TypeFilter(meta.WhiteSpaceType)), - ) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) { - diff := pretty.Compare(expectedCutCollection, actualCutCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} - -func TestCollectionCutByTokenNameButNotType(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - OpenParenthesisToken, - CloseParenthesisToken, - } - - expectedCollection := meta.Collection{ - whiteSpace, - OpenParenthesisToken, - CloseParenthesisToken, - } - expectedCutCollection := &meta.Collection{ - OpenParenthesisComment, - } - - // action - - actualCutCollection := actualCollection.Cut(meta.AndFilter( - meta.TokenNameFilter(meta.OpenParenthesisToken), - meta.NotFilter(meta.TypeFilter(meta.TokenType))), - ) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) { - diff := pretty.Compare(expectedCutCollection, actualCutCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} - -func TestCollectionCutByValue(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - OpenParenthesisToken, - CloseParenthesisToken, - } - - expectedCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - } - expectedCutCollection := &meta.Collection{ - OpenParenthesisToken, - CloseParenthesisToken, - } - - // action - - actualCutCollection := actualCollection.Cut(meta.ValueFilter("(", ")")) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) { - diff := pretty.Compare(expectedCutCollection, actualCutCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} - -func TestCollectionCutUntilFirstToken(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - TokenName: meta.NodeStart, - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.NodeStart, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisComment := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - OpenParenthesisToken, - CloseParenthesisComment, - CloseParenthesisToken, - } - - expectedCutCollection := &meta.Collection{ - whiteSpace, - OpenParenthesisComment, - } - expectedCollection := meta.Collection{ - OpenParenthesisToken, - CloseParenthesisComment, // must not be cut - CloseParenthesisToken, - } - - // action - - actualCutCollection := actualCollection.Cut( - meta.StopOnFailureFilter( - meta.NotFilter( - meta.TypeFilter(meta.TokenType), - ), - ), - ) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedCutCollection, actualCutCollection) { - diff := pretty.Compare(expectedCutCollection, actualCutCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} - -func TestCollectionFindByType(t *testing.T) { - - // prepare - - whiteSpace := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "\n", - TokenName: meta.NodeStart, - } - OpenParenthesisComment := &meta.Data{ - Type: meta.CommentType, - Value: "// some comment", - TokenName: meta.NodeStart, - } - OpenParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: "(", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisComment := &meta.Data{ - Type: meta.WhiteSpaceType, - Value: "// some comment", - TokenName: meta.OpenParenthesisToken, - } - CloseParenthesisToken := &meta.Data{ - Type: meta.TokenType, - Value: ")", - TokenName: meta.CloseParenthesisToken, - } - - actualCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - OpenParenthesisToken, - CloseParenthesisComment, - CloseParenthesisToken, - } - - expectedCollection := meta.Collection{ - whiteSpace, - OpenParenthesisComment, - OpenParenthesisToken, - CloseParenthesisComment, - CloseParenthesisToken, - } - - expectedFoundCollection := meta.Collection{ - OpenParenthesisToken, - CloseParenthesisToken, - } - - // action - - actualFoundCollection := actualCollection.FindBy(meta.TypeFilter(meta.TokenType)) - - // check - - if !reflect.DeepEqual(expectedCollection, actualCollection) { - diff := pretty.Compare(expectedCollection, actualCollection) - - if diff != "" { - t.Errorf("\nexpected and actual collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual collections are not equal\n") - } - } - - if !reflect.DeepEqual(expectedFoundCollection, actualFoundCollection) { - diff := pretty.Compare(expectedFoundCollection, actualFoundCollection) - - if diff != "" { - t.Errorf("\nexpected and actual Cut collections are not equal\ndiff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("\nexpected and actual Cut collections are not equal\n") - } - } -} diff --git a/meta/data.go b/meta/data.go deleted file mode 100644 index e45e6a0..0000000 --- a/meta/data.go +++ /dev/null @@ -1,17 +0,0 @@ -package meta - -import ( - "github.com/z7zmey/php-parser/position" -) - -// Data contain additional information that isn't part of AST -type Data struct { - Value string - Type Type - Position *position.Position - TokenName TokenName -} - -func (d *Data) String() string { - return d.Value -} diff --git a/meta/data_test.go b/meta/data_test.go deleted file mode 100644 index cb5c5e8..0000000 --- a/meta/data_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package meta_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/meta" -) - -func TestCommentPrint(t *testing.T) { - expected := "/** hello world */" - - comment := meta.Data{ - Value: expected, - } - - actual := comment.String() - - if expected != actual { - t.Errorf("expected and actual are not equal\n") - } -} diff --git a/meta/tokenName.go b/meta/tokenName.go deleted file mode 100644 index 348a203..0000000 --- a/meta/tokenName.go +++ /dev/null @@ -1,85 +0,0 @@ -package meta - -// TokenName is used to specify a comment position -type TokenName int - -//go:generate stringer -type=TokenName -output ./tokenName_string.go -const ( - NodeStart TokenName = iota - NodeEnd - WhileToken - EndwhileToken - ForInitSemicolonToken - ForCondSemicolonToken - EndforToken - EndforeachToken - EnddeclareToken - AsToken - EndswitchToken - FunctionToken - ConstToken - InsteadofToken - ClassToken - ExtendsToken - ImplementsToken - DoubleArrowToken - PaamayimNekudotayimToken - NsSeparatorToken - EllipsisToken - LogicalOrToken - LogicalXorToken - LogicalAndToken - InstanceofToken - EndifToken - IncToken - DecToken - ObjectOperatorToken - CoalesceToken - SpaceshipToken - PlusEqualToken - MinusEqualToken - MulEqualToken - PowEqualToken - DivEqualToken - ConcatEqualToken - ModEqualToken - AndEqualToken - OrEqualToken - XorEqualToken - SlEqualToken - SrEqualToken - BooleanOrToken - BooleanAndToken - PowToken - SlToken - SrToken - IsIdenticalToken - IsNotIdenticalToken - IsEqualToken - IsNotEqualToken - IsSmallerOrEqualToken - IsGreaterOrEqualToken - CaseSeparatorToken // ';' or ':' - OpenCurlyBracesToken // '{' - CloseCurlyBracesToken // '}' - SemiColonToken // ';' - ColonToken // ':' - OpenParenthesisToken // '(' - CloseParenthesisToken // ')' - OpenSquareBracket // '[' - CloseSquareBracket // ']' - QuestionMarkToken // '?' - AmpersandToken // '&' - MinusToken // '-' - PlusToken // '+' - CommaToken // ',' - VerticalBarToken // '|' - EqualToken // '=' - CaretToken // '^' - AsteriskToken // '*' - SlashToken // '/' - PercentToken // '%' - LessToken // '<' - GreaterToken // '>' - DotToken // '.' -) diff --git a/meta/tokenName_string.go b/meta/tokenName_string.go deleted file mode 100644 index 6eebadc..0000000 --- a/meta/tokenName_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=TokenName -output ./tokenName_string.go"; DO NOT EDIT. - -package meta - -import "strconv" - -const _TokenName_name = "NodeStartNodeEndWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenEndforTokenEndforeachTokenEnddeclareTokenAsTokenEndswitchTokenFunctionTokenConstTokenInsteadofTokenClassTokenExtendsTokenImplementsTokenDoubleArrowTokenPaamayimNekudotayimTokenNsSeparatorTokenEllipsisTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenEndifTokenIncTokenDecTokenObjectOperatorTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenCaseSeparatorTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken" - -var _TokenName_index = [...]uint16{0, 9, 16, 26, 39, 60, 81, 92, 107, 122, 129, 143, 156, 166, 180, 190, 202, 217, 233, 257, 273, 286, 300, 315, 330, 345, 355, 363, 371, 390, 403, 417, 431, 446, 459, 472, 485, 501, 514, 527, 539, 552, 564, 576, 590, 605, 613, 620, 627, 643, 662, 674, 689, 710, 731, 749, 769, 790, 804, 814, 834, 855, 872, 890, 907, 921, 931, 940, 950, 966, 976, 986, 999, 1009, 1021, 1030, 1042, 1050} - -func (i TokenName) String() string { - if i < 0 || i >= TokenName(len(_TokenName_index)-1) { - return "TokenName(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _TokenName_name[_TokenName_index[i]:_TokenName_index[i+1]] -} diff --git a/meta/tokenName_test.go b/meta/tokenName_test.go deleted file mode 100644 index ab3c706..0000000 --- a/meta/tokenName_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package meta_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/meta" -) - -func TestTokenNameString(t *testing.T) { - c := meta.NsSeparatorToken - - expected := "NsSeparatorToken" - actual := c.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} - -func TestWrongTokenNameString(t *testing.T) { - c := meta.TokenName(-1) - - expected := "TokenName(-1)" - actual := c.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} diff --git a/meta/type.go b/meta/type.go deleted file mode 100644 index 783149f..0000000 --- a/meta/type.go +++ /dev/null @@ -1,11 +0,0 @@ -package meta - -// Type TODO -type Type int - -//go:generate stringer -type=Type -output ./type_string.go -const ( - CommentType Type = iota - WhiteSpaceType - TokenType -) diff --git a/meta/type_string.go b/meta/type_string.go deleted file mode 100644 index 69cb010..0000000 --- a/meta/type_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=Type -output ./type_string.go"; DO NOT EDIT. - -package meta - -import "strconv" - -const _Type_name = "CommentTypeWhiteSpaceTypeTokenType" - -var _Type_index = [...]uint8{0, 11, 25, 34} - -func (i Type) String() string { - if i < 0 || i >= Type(len(_Type_index)-1) { - return "Type(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _Type_name[_Type_index[i]:_Type_index[i+1]] -} diff --git a/meta/type_test.go b/meta/type_test.go deleted file mode 100644 index bb2564e..0000000 --- a/meta/type_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package meta_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/meta" -) - -func TestTypeString(t *testing.T) { - c := meta.CommentType - - expected := "CommentType" - actual := c.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} - -func TestWrongTypeString(t *testing.T) { - c := meta.Type(-1) - - expected := "Type(-1)" - actual := c.String() - - if expected != actual { - t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) - } -} diff --git a/node/expr/assign/n_assign.go b/node/expr/assign/n_assign.go index d2d4db4..dd55306 100644 --- a/node/expr/assign/n_assign.go +++ b/node/expr/assign/n_assign.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Assign node type Assign struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewAssign node constructor func NewAssign(Variable node.Node, Expression node.Node) *Assign { return &Assign{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Assign) GetPosition() *position.Position { return n.Position } -func (n *Assign) GetMeta() *meta.Collection { - return &n.Meta +func (n *Assign) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_assign_ref.go b/node/expr/assign/n_assign_ref.go index 90eff92..fbf95ae 100644 --- a/node/expr/assign/n_assign_ref.go +++ b/node/expr/assign/n_assign_ref.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Reference node type Reference struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewReference node constructor func NewReference(Variable node.Node, Expression node.Node) *Reference { return &Reference{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Reference) GetPosition() *position.Position { return n.Position } -func (n *Reference) GetMeta() *meta.Collection { - return &n.Meta +func (n *Reference) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_bitwise_and.go b/node/expr/assign/n_bitwise_and.go index 5d84216..1ba0a97 100644 --- a/node/expr/assign/n_bitwise_and.go +++ b/node/expr/assign/n_bitwise_and.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseAnd node type BitwiseAnd struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewBitwiseAnd node constructor func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { return &BitwiseAnd{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position { return n.Position } -func (n *BitwiseAnd) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_bitwise_or.go b/node/expr/assign/n_bitwise_or.go index bb54040..46f9ee4 100644 --- a/node/expr/assign/n_bitwise_or.go +++ b/node/expr/assign/n_bitwise_or.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseOr node type BitwiseOr struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewBitwiseOr node constructor func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { return &BitwiseOr{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseOr) GetPosition() *position.Position { return n.Position } -func (n *BitwiseOr) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_bitwise_xor.go b/node/expr/assign/n_bitwise_xor.go index b1f9dad..7f8050f 100644 --- a/node/expr/assign/n_bitwise_xor.go +++ b/node/expr/assign/n_bitwise_xor.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseXor node type BitwiseXor struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewBitwiseXor node constructor func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { return &BitwiseXor{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseXor) GetPosition() *position.Position { return n.Position } -func (n *BitwiseXor) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_concat.go b/node/expr/assign/n_concat.go index 44c175b..63c7e9d 100644 --- a/node/expr/assign/n_concat.go +++ b/node/expr/assign/n_concat.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Concat node type Concat struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewConcat node constructor func NewConcat(Variable node.Node, Expression node.Node) *Concat { return &Concat{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Concat) GetPosition() *position.Position { return n.Position } -func (n *Concat) GetMeta() *meta.Collection { - return &n.Meta +func (n *Concat) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_div.go b/node/expr/assign/n_div.go index a988398..2073b15 100644 --- a/node/expr/assign/n_div.go +++ b/node/expr/assign/n_div.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Div node type Div struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewDiv node constructor func NewDiv(Variable node.Node, Expression node.Node) *Div { return &Div{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Div) GetPosition() *position.Position { return n.Position } -func (n *Div) GetMeta() *meta.Collection { - return &n.Meta +func (n *Div) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_minus.go b/node/expr/assign/n_minus.go index 1ea308c..efc147c 100644 --- a/node/expr/assign/n_minus.go +++ b/node/expr/assign/n_minus.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Minus node type Minus struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewMinus node constructor func NewMinus(Variable node.Node, Expression node.Node) *Minus { return &Minus{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Minus) GetPosition() *position.Position { return n.Position } -func (n *Minus) GetMeta() *meta.Collection { - return &n.Meta +func (n *Minus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_mod.go b/node/expr/assign/n_mod.go index 281394e..8fab46a 100644 --- a/node/expr/assign/n_mod.go +++ b/node/expr/assign/n_mod.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Mod node type Mod struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewMod node constructor func NewMod(Variable node.Node, Expression node.Node) *Mod { return &Mod{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Mod) GetPosition() *position.Position { return n.Position } -func (n *Mod) GetMeta() *meta.Collection { - return &n.Meta +func (n *Mod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_mul.go b/node/expr/assign/n_mul.go index f2cb5ae..3076b05 100644 --- a/node/expr/assign/n_mul.go +++ b/node/expr/assign/n_mul.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Mul node type Mul struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewMul node constructor func NewMul(Variable node.Node, Expression node.Node) *Mul { return &Mul{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Mul) GetPosition() *position.Position { return n.Position } -func (n *Mul) GetMeta() *meta.Collection { - return &n.Meta +func (n *Mul) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_plus.go b/node/expr/assign/n_plus.go index 0f3b137..f2c3753 100644 --- a/node/expr/assign/n_plus.go +++ b/node/expr/assign/n_plus.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Plus node type Plus struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewPlus node constructor func NewPlus(Variable node.Node, Expression node.Node) *Plus { return &Plus{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Plus) GetPosition() *position.Position { return n.Position } -func (n *Plus) GetMeta() *meta.Collection { - return &n.Meta +func (n *Plus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_pow.go b/node/expr/assign/n_pow.go index fa5a17f..6bd48e7 100644 --- a/node/expr/assign/n_pow.go +++ b/node/expr/assign/n_pow.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Pow node type Pow struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewPow node constructor func NewPow(Variable node.Node, Expression node.Node) *Pow { return &Pow{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *Pow) GetPosition() *position.Position { return n.Position } -func (n *Pow) GetMeta() *meta.Collection { - return &n.Meta +func (n *Pow) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_shift_left.go b/node/expr/assign/n_shift_left.go index 963bf56..0c541ba 100644 --- a/node/expr/assign/n_shift_left.go +++ b/node/expr/assign/n_shift_left.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ShiftLeft node type ShiftLeft struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewShiftLeft node constructor func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { return &ShiftLeft{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *ShiftLeft) GetPosition() *position.Position { return n.Position } -func (n *ShiftLeft) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/n_shift_right.go b/node/expr/assign/n_shift_right.go index 3a1cd4c..c496e7e 100644 --- a/node/expr/assign/n_shift_right.go +++ b/node/expr/assign/n_shift_right.go @@ -1,7 +1,7 @@ package assign import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ShiftRight node type ShiftRight struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expression node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node } // NewShiftRight node constructor func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { return &ShiftRight{ - Variable: Variable, - Expression: Expression, + FreeFloating: nil, + Variable: Variable, + Expression: Expression, } } @@ -33,8 +34,8 @@ func (n *ShiftRight) GetPosition() *position.Position { return n.Position } -func (n *ShiftRight) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShiftRight) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/assign/t_assign_op_test.go b/node/expr/assign/t_assign_op_test.go index 4a00579..19b0ca7 100644 --- a/node/expr/assign/t_assign_op_test.go +++ b/node/expr/assign/t_assign_op_test.go @@ -2,14 +2,13 @@ package assign_test import ( "bytes" - "reflect" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/position" - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" @@ -18,18 +17,6 @@ import ( "github.com/z7zmey/php-parser/php7" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - } -} - func TestReference(t *testing.T) { src := ` $a =& $b;` @@ -97,12 +84,12 @@ func TestReference(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestReferenceNew(t *testing.T) { @@ -182,12 +169,12 @@ func TestReferenceNew(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestReferenceArgs(t *testing.T) { @@ -304,12 +291,12 @@ func TestReferenceArgs(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAssign(t *testing.T) { @@ -379,12 +366,12 @@ func TestAssign(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBitwiseAnd(t *testing.T) { @@ -454,12 +441,12 @@ func TestBitwiseAnd(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBitwiseOr(t *testing.T) { @@ -529,12 +516,12 @@ func TestBitwiseOr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBitwiseXor(t *testing.T) { @@ -604,12 +591,12 @@ func TestBitwiseXor(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestConcat(t *testing.T) { @@ -679,12 +666,12 @@ func TestConcat(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDiv(t *testing.T) { @@ -754,12 +741,12 @@ func TestDiv(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMinus(t *testing.T) { @@ -829,12 +816,12 @@ func TestMinus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMod(t *testing.T) { @@ -904,12 +891,12 @@ func TestMod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMul(t *testing.T) { @@ -979,12 +966,12 @@ func TestMul(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPlus(t *testing.T) { @@ -1054,12 +1041,12 @@ func TestPlus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPow(t *testing.T) { @@ -1129,12 +1116,12 @@ func TestPow(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShiftLeft(t *testing.T) { @@ -1204,12 +1191,12 @@ func TestShiftLeft(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShiftRight(t *testing.T) { @@ -1279,10 +1266,10 @@ func TestShiftRight(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/assign/t_freefloating_test.go b/node/expr/assign/t_freefloating_test.go new file mode 100644 index 0000000..151ac20 --- /dev/null +++ b/node/expr/assign/t_freefloating_test.go @@ -0,0 +1,81 @@ +package assign_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr/assign" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &assign.Reference{ + FreeFloating: expected, + }, + &assign.Assign{ + FreeFloating: expected, + }, + &assign.BitwiseAnd{ + FreeFloating: expected, + }, + &assign.BitwiseOr{ + FreeFloating: expected, + }, + &assign.BitwiseXor{ + FreeFloating: expected, + }, + &assign.Concat{ + FreeFloating: expected, + }, + &assign.Div{ + FreeFloating: expected, + }, + &assign.Minus{ + FreeFloating: expected, + }, + &assign.Mod{ + FreeFloating: expected, + }, + &assign.Mul{ + FreeFloating: expected, + }, + &assign.Plus{ + FreeFloating: expected, + }, + &assign.Pow{ + FreeFloating: expected, + }, + &assign.ShiftLeft{ + FreeFloating: expected, + }, + &assign.ShiftRight{ + FreeFloating: expected, + }, + &assign.ShiftRight{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/expr/assign/t_meta_test.go b/node/expr/assign/t_meta_test.go deleted file mode 100644 index c9d7e0b..0000000 --- a/node/expr/assign/t_meta_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package assign_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/expr/assign" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &assign.Reference{}, - &assign.Assign{}, - &assign.BitwiseAnd{}, - &assign.BitwiseOr{}, - &assign.BitwiseXor{}, - &assign.Concat{}, - &assign.Div{}, - &assign.Minus{}, - &assign.Mod{}, - &assign.Mul{}, - &assign.Plus{}, - &assign.Pow{}, - &assign.ShiftLeft{}, - &assign.ShiftRight{}, - &assign.ShiftRight{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/expr/assign/t_position_test.go b/node/expr/assign/t_position_test.go index 6813437..8963458 100644 --- a/node/expr/assign/t_position_test.go +++ b/node/expr/assign/t_position_test.go @@ -3,6 +3,8 @@ package assign_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/assign/t_visitor_test.go b/node/expr/assign/t_visitor_test.go index 3b65670..6694b5b 100644 --- a/node/expr/assign/t_visitor_test.go +++ b/node/expr/assign/t_visitor_test.go @@ -1,15 +1,13 @@ package assign_test import ( - "reflect" "testing" - "github.com/z7zmey/php-parser/node/expr/assign" - - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/walker" ) @@ -24,7 +22,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Assign{ @@ -32,7 +30,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.BitwiseAnd{ @@ -40,7 +38,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.BitwiseOr{ @@ -48,7 +46,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.BitwiseXor{ @@ -56,7 +54,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Concat{ @@ -64,7 +62,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Div{ @@ -72,7 +70,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Minus{ @@ -80,7 +78,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Mod{ @@ -88,7 +86,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Mul{ @@ -96,7 +94,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Plus{ @@ -104,7 +102,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.Pow{ @@ -112,7 +110,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.ShiftLeft{ @@ -120,7 +118,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, { &assign.ShiftRight{ @@ -128,7 +126,7 @@ var nodesToTest = []struct { Expression: &expr.Variable{}, }, []string{"Variable", "Expression"}, - map[string]interface{}{}, + nil, }, } @@ -150,31 +148,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestVisitor(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -185,9 +177,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/binary/n_bitwise_and.go b/node/expr/binary/n_bitwise_and.go index f10c1da..76eb9ed 100644 --- a/node/expr/binary/n_bitwise_and.go +++ b/node/expr/binary/n_bitwise_and.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseAnd node type BitwiseAnd struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewBitwiseAnd node constructor func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { return &BitwiseAnd{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseAnd) GetPosition() *position.Position { return n.Position } -func (n *BitwiseAnd) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_bitwise_or.go b/node/expr/binary/n_bitwise_or.go index 31583c5..6f3ea41 100644 --- a/node/expr/binary/n_bitwise_or.go +++ b/node/expr/binary/n_bitwise_or.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseOr node type BitwiseOr struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewBitwiseOr node constructor func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { return &BitwiseOr{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseOr) GetPosition() *position.Position { return n.Position } -func (n *BitwiseOr) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_bitwise_xor.go b/node/expr/binary/n_bitwise_xor.go index 567d434..57ae9fa 100644 --- a/node/expr/binary/n_bitwise_xor.go +++ b/node/expr/binary/n_bitwise_xor.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BitwiseXor node type BitwiseXor struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewBitwiseXor node constructor func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { return &BitwiseXor{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *BitwiseXor) GetPosition() *position.Position { return n.Position } -func (n *BitwiseXor) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_boolean_and.go b/node/expr/binary/n_boolean_and.go index 80ac46e..d81371f 100644 --- a/node/expr/binary/n_boolean_and.go +++ b/node/expr/binary/n_boolean_and.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BooleanAnd node type BooleanAnd struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewBooleanAnd node constructor func NewBooleanAnd(Variable node.Node, Expression node.Node) *BooleanAnd { return &BooleanAnd{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *BooleanAnd) GetPosition() *position.Position { return n.Position } -func (n *BooleanAnd) GetMeta() *meta.Collection { - return &n.Meta +func (n *BooleanAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_boolean_or.go b/node/expr/binary/n_boolean_or.go index 08abce1..20837d4 100644 --- a/node/expr/binary/n_boolean_or.go +++ b/node/expr/binary/n_boolean_or.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // BooleanOr node type BooleanOr struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewBooleanOr node constructor func NewBooleanOr(Variable node.Node, Expression node.Node) *BooleanOr { return &BooleanOr{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *BooleanOr) GetPosition() *position.Position { return n.Position } -func (n *BooleanOr) GetMeta() *meta.Collection { - return &n.Meta +func (n *BooleanOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_coalesce.go b/node/expr/binary/n_coalesce.go index a0b5094..f938099 100644 --- a/node/expr/binary/n_coalesce.go +++ b/node/expr/binary/n_coalesce.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Coalesce node type Coalesce struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewCoalesce node constructor func NewCoalesce(Variable node.Node, Expression node.Node) *Coalesce { return &Coalesce{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Coalesce) GetPosition() *position.Position { return n.Position } -func (n *Coalesce) GetMeta() *meta.Collection { - return &n.Meta +func (n *Coalesce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_concat.go b/node/expr/binary/n_concat.go index 9761226..c356e6f 100644 --- a/node/expr/binary/n_concat.go +++ b/node/expr/binary/n_concat.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Concat node type Concat struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewConcat node constructor func NewConcat(Variable node.Node, Expression node.Node) *Concat { return &Concat{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Concat) GetPosition() *position.Position { return n.Position } -func (n *Concat) GetMeta() *meta.Collection { - return &n.Meta +func (n *Concat) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_div.go b/node/expr/binary/n_div.go index 0bd20d4..978e446 100644 --- a/node/expr/binary/n_div.go +++ b/node/expr/binary/n_div.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Div node type Div struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewDiv node constructor func NewDiv(Variable node.Node, Expression node.Node) *Div { return &Div{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Div) GetPosition() *position.Position { return n.Position } -func (n *Div) GetMeta() *meta.Collection { - return &n.Meta +func (n *Div) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_equal.go b/node/expr/binary/n_equal.go index fdb9d85..e8debbb 100644 --- a/node/expr/binary/n_equal.go +++ b/node/expr/binary/n_equal.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Equal node type Equal struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewEqual node constructor func NewEqual(Variable node.Node, Expression node.Node) *Equal { return &Equal{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Equal) GetPosition() *position.Position { return n.Position } -func (n *Equal) GetMeta() *meta.Collection { - return &n.Meta +func (n *Equal) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_greater.go b/node/expr/binary/n_greater.go index d615051..0915acc 100644 --- a/node/expr/binary/n_greater.go +++ b/node/expr/binary/n_greater.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Greater node type Greater struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewGreater node constructor func NewGreater(Variable node.Node, Expression node.Node) *Greater { return &Greater{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Greater) GetPosition() *position.Position { return n.Position } -func (n *Greater) GetMeta() *meta.Collection { - return &n.Meta +func (n *Greater) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_greater_or_equal.go b/node/expr/binary/n_greater_or_equal.go index 59cd5e0..3f1a4e7 100644 --- a/node/expr/binary/n_greater_or_equal.go +++ b/node/expr/binary/n_greater_or_equal.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // GreaterOrEqual node type GreaterOrEqual struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewGreaterOrEqual node constructor func NewGreaterOrEqual(Variable node.Node, Expression node.Node) *GreaterOrEqual { return &GreaterOrEqual{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *GreaterOrEqual) GetPosition() *position.Position { return n.Position } -func (n *GreaterOrEqual) GetMeta() *meta.Collection { - return &n.Meta +func (n *GreaterOrEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_identical.go b/node/expr/binary/n_identical.go index 9a2f4aa..51e3f9d 100644 --- a/node/expr/binary/n_identical.go +++ b/node/expr/binary/n_identical.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Identical node type Identical struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewIdentical node constructor func NewIdentical(Variable node.Node, Expression node.Node) *Identical { return &Identical{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Identical) GetPosition() *position.Position { return n.Position } -func (n *Identical) GetMeta() *meta.Collection { - return &n.Meta +func (n *Identical) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_logical_and.go b/node/expr/binary/n_logical_and.go index de907ca..8bacaac 100644 --- a/node/expr/binary/n_logical_and.go +++ b/node/expr/binary/n_logical_and.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // LogicalAnd node type LogicalAnd struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewLogicalAnd node constructor func NewLogicalAnd(Variable node.Node, Expression node.Node) *LogicalAnd { return &LogicalAnd{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *LogicalAnd) GetPosition() *position.Position { return n.Position } -func (n *LogicalAnd) GetMeta() *meta.Collection { - return &n.Meta +func (n *LogicalAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_logical_or.go b/node/expr/binary/n_logical_or.go index 1102b03..85de6ef 100644 --- a/node/expr/binary/n_logical_or.go +++ b/node/expr/binary/n_logical_or.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // LogicalOr node type LogicalOr struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewLogicalOr node constructor func NewLogicalOr(Variable node.Node, Expression node.Node) *LogicalOr { return &LogicalOr{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *LogicalOr) GetPosition() *position.Position { return n.Position } -func (n *LogicalOr) GetMeta() *meta.Collection { - return &n.Meta +func (n *LogicalOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_logical_xor.go b/node/expr/binary/n_logical_xor.go index fd2373a..9764d23 100644 --- a/node/expr/binary/n_logical_xor.go +++ b/node/expr/binary/n_logical_xor.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // LogicalXor node type LogicalXor struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewLogicalXor node constructor func NewLogicalXor(Variable node.Node, Expression node.Node) *LogicalXor { return &LogicalXor{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *LogicalXor) GetPosition() *position.Position { return n.Position } -func (n *LogicalXor) GetMeta() *meta.Collection { - return &n.Meta +func (n *LogicalXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_minus.go b/node/expr/binary/n_minus.go index c86be72..e9b3d2e 100644 --- a/node/expr/binary/n_minus.go +++ b/node/expr/binary/n_minus.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Minus node type Minus struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewMinus node constructor func NewMinus(Variable node.Node, Expression node.Node) *Minus { return &Minus{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Minus) GetPosition() *position.Position { return n.Position } -func (n *Minus) GetMeta() *meta.Collection { - return &n.Meta +func (n *Minus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_mod.go b/node/expr/binary/n_mod.go index 4bf928d..11a2845 100644 --- a/node/expr/binary/n_mod.go +++ b/node/expr/binary/n_mod.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Mod node type Mod struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewMod node constructor func NewMod(Variable node.Node, Expression node.Node) *Mod { return &Mod{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Mod) GetPosition() *position.Position { return n.Position } -func (n *Mod) GetMeta() *meta.Collection { - return &n.Meta +func (n *Mod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_mul.go b/node/expr/binary/n_mul.go index 98b9a7e..994b762 100644 --- a/node/expr/binary/n_mul.go +++ b/node/expr/binary/n_mul.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Mul node type Mul struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewMul node constructor func NewMul(Variable node.Node, Expression node.Node) *Mul { return &Mul{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Mul) GetPosition() *position.Position { return n.Position } -func (n *Mul) GetMeta() *meta.Collection { - return &n.Meta +func (n *Mul) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_not_equal.go b/node/expr/binary/n_not_equal.go index 915fae3..747917f 100644 --- a/node/expr/binary/n_not_equal.go +++ b/node/expr/binary/n_not_equal.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // NotEqual node type NotEqual struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewNotEqual node constructor func NewNotEqual(Variable node.Node, Expression node.Node) *NotEqual { return &NotEqual{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *NotEqual) GetPosition() *position.Position { return n.Position } -func (n *NotEqual) GetMeta() *meta.Collection { - return &n.Meta +func (n *NotEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_not_identical.go b/node/expr/binary/n_not_identical.go index 629b491..c9d9951 100644 --- a/node/expr/binary/n_not_identical.go +++ b/node/expr/binary/n_not_identical.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // NotIdentical node type NotIdentical struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewNotIdentical node constructor func NewNotIdentical(Variable node.Node, Expression node.Node) *NotIdentical { return &NotIdentical{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *NotIdentical) GetPosition() *position.Position { return n.Position } -func (n *NotIdentical) GetMeta() *meta.Collection { - return &n.Meta +func (n *NotIdentical) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_plus.go b/node/expr/binary/n_plus.go index ffb81ed..d6007d0 100644 --- a/node/expr/binary/n_plus.go +++ b/node/expr/binary/n_plus.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Plus node type Plus struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewPlus node constructor func NewPlus(Variable node.Node, Expression node.Node) *Plus { return &Plus{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Plus) GetPosition() *position.Position { return n.Position } -func (n *Plus) GetMeta() *meta.Collection { - return &n.Meta +func (n *Plus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_pow.go b/node/expr/binary/n_pow.go index e07820c..9f3bebb 100644 --- a/node/expr/binary/n_pow.go +++ b/node/expr/binary/n_pow.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Pow node type Pow struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewPow node constructor func NewPow(Variable node.Node, Expression node.Node) *Pow { return &Pow{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Pow) GetPosition() *position.Position { return n.Position } -func (n *Pow) GetMeta() *meta.Collection { - return &n.Meta +func (n *Pow) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_shift_left.go b/node/expr/binary/n_shift_left.go index 7d15f7c..2ab0efd 100644 --- a/node/expr/binary/n_shift_left.go +++ b/node/expr/binary/n_shift_left.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ShiftLeft node type ShiftLeft struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewShiftLeft node constructor func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { return &ShiftLeft{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *ShiftLeft) GetPosition() *position.Position { return n.Position } -func (n *ShiftLeft) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_shift_right.go b/node/expr/binary/n_shift_right.go index 8e6087d..5716b56 100644 --- a/node/expr/binary/n_shift_right.go +++ b/node/expr/binary/n_shift_right.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ShiftRight node type ShiftRight struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewShiftRight node constructor func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { return &ShiftRight{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *ShiftRight) GetPosition() *position.Position { return n.Position } -func (n *ShiftRight) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShiftRight) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_smaller.go b/node/expr/binary/n_smaller.go index e598b75..cccc320 100644 --- a/node/expr/binary/n_smaller.go +++ b/node/expr/binary/n_smaller.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Smaller node type Smaller struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewSmaller node constructor func NewSmaller(Variable node.Node, Expression node.Node) *Smaller { return &Smaller{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Smaller) GetPosition() *position.Position { return n.Position } -func (n *Smaller) GetMeta() *meta.Collection { - return &n.Meta +func (n *Smaller) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_smaller_or_equal.go b/node/expr/binary/n_smaller_or_equal.go index 14b82c8..5d9c1df 100644 --- a/node/expr/binary/n_smaller_or_equal.go +++ b/node/expr/binary/n_smaller_or_equal.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // SmallerOrEqual node type SmallerOrEqual struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewSmallerOrEqual node constructor func NewSmallerOrEqual(Variable node.Node, Expression node.Node) *SmallerOrEqual { return &SmallerOrEqual{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *SmallerOrEqual) GetPosition() *position.Position { return n.Position } -func (n *SmallerOrEqual) GetMeta() *meta.Collection { - return &n.Meta +func (n *SmallerOrEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/n_spaceship.go b/node/expr/binary/n_spaceship.go index d47aa06..e3ca60e 100644 --- a/node/expr/binary/n_spaceship.go +++ b/node/expr/binary/n_spaceship.go @@ -1,7 +1,7 @@ package binary import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Spaceship node type Spaceship struct { - Meta meta.Collection - Position *position.Position - Left node.Node - Right node.Node + FreeFloating freefloating.Collection + Position *position.Position + Left node.Node + Right node.Node } // NewSpaceship node constructor func NewSpaceship(Variable node.Node, Expression node.Node) *Spaceship { return &Spaceship{ - Left: Variable, - Right: Expression, + FreeFloating: nil, + Left: Variable, + Right: Expression, } } @@ -33,8 +34,8 @@ func (n *Spaceship) GetPosition() *position.Position { return n.Position } -func (n *Spaceship) GetMeta() *meta.Collection { - return &n.Meta +func (n *Spaceship) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/binary/t_binary_op_test.go b/node/expr/binary/t_binary_op_test.go index ccca911..5ad987f 100644 --- a/node/expr/binary/t_binary_op_test.go +++ b/node/expr/binary/t_binary_op_test.go @@ -2,10 +2,9 @@ package binary_test import ( "bytes" - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" @@ -16,18 +15,6 @@ import ( "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - } -} - func TestBitwiseAnd(t *testing.T) { src := ` $a & $b;` @@ -95,12 +82,12 @@ func TestBitwiseAnd(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBitwiseOr(t *testing.T) { @@ -170,12 +157,12 @@ func TestBitwiseOr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBitwiseXor(t *testing.T) { @@ -245,12 +232,12 @@ func TestBitwiseXor(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBooleanAnd(t *testing.T) { @@ -320,12 +307,12 @@ func TestBooleanAnd(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBooleanOr(t *testing.T) { @@ -395,12 +382,12 @@ func TestBooleanOr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestCoalesce(t *testing.T) { @@ -470,7 +457,7 @@ func TestCoalesce(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestConcat(t *testing.T) { @@ -540,12 +527,12 @@ func TestConcat(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDiv(t *testing.T) { @@ -615,12 +602,12 @@ func TestDiv(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestEqual(t *testing.T) { @@ -690,12 +677,12 @@ func TestEqual(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestGreaterOrEqual(t *testing.T) { @@ -765,12 +752,12 @@ func TestGreaterOrEqual(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestGreater(t *testing.T) { @@ -840,12 +827,12 @@ func TestGreater(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestIdentical(t *testing.T) { @@ -915,12 +902,12 @@ func TestIdentical(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestLogicalAnd(t *testing.T) { @@ -990,12 +977,12 @@ func TestLogicalAnd(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestLogicalOr(t *testing.T) { @@ -1065,12 +1052,12 @@ func TestLogicalOr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestLogicalXor(t *testing.T) { @@ -1140,12 +1127,12 @@ func TestLogicalXor(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMinus(t *testing.T) { @@ -1215,12 +1202,12 @@ func TestMinus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMod(t *testing.T) { @@ -1290,12 +1277,12 @@ func TestMod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMul(t *testing.T) { @@ -1365,12 +1352,12 @@ func TestMul(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNotEqual(t *testing.T) { @@ -1440,12 +1427,12 @@ func TestNotEqual(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNotIdentical(t *testing.T) { @@ -1515,12 +1502,12 @@ func TestNotIdentical(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPlus(t *testing.T) { @@ -1590,12 +1577,12 @@ func TestPlus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPow(t *testing.T) { @@ -1665,12 +1652,12 @@ func TestPow(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShiftLeft(t *testing.T) { @@ -1740,12 +1727,12 @@ func TestShiftLeft(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShiftRight(t *testing.T) { @@ -1815,12 +1802,12 @@ func TestShiftRight(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSmallerOrEqual(t *testing.T) { @@ -1890,12 +1877,12 @@ func TestSmallerOrEqual(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSmaller(t *testing.T) { @@ -1965,12 +1952,12 @@ func TestSmaller(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSpaceship(t *testing.T) { @@ -2040,5 +2027,5 @@ func TestSpaceship(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/binary/t_freefloating_test.go b/node/expr/binary/t_freefloating_test.go new file mode 100644 index 0000000..7db5cf4 --- /dev/null +++ b/node/expr/binary/t_freefloating_test.go @@ -0,0 +1,117 @@ +package binary_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr/binary" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &binary.BitwiseAnd{ + FreeFloating: expected, + }, + &binary.BitwiseOr{ + FreeFloating: expected, + }, + &binary.BitwiseXor{ + FreeFloating: expected, + }, + &binary.BooleanAnd{ + FreeFloating: expected, + }, + &binary.BooleanOr{ + FreeFloating: expected, + }, + &binary.Coalesce{ + FreeFloating: expected, + }, + &binary.Concat{ + FreeFloating: expected, + }, + &binary.Div{ + FreeFloating: expected, + }, + &binary.Equal{ + FreeFloating: expected, + }, + &binary.GreaterOrEqual{ + FreeFloating: expected, + }, + &binary.Greater{ + FreeFloating: expected, + }, + &binary.Identical{ + FreeFloating: expected, + }, + &binary.LogicalAnd{ + FreeFloating: expected, + }, + &binary.LogicalOr{ + FreeFloating: expected, + }, + &binary.LogicalXor{ + FreeFloating: expected, + }, + &binary.Minus{ + FreeFloating: expected, + }, + &binary.Mod{ + FreeFloating: expected, + }, + &binary.Mul{ + FreeFloating: expected, + }, + &binary.NotEqual{ + FreeFloating: expected, + }, + &binary.NotIdentical{ + FreeFloating: expected, + }, + &binary.Plus{ + FreeFloating: expected, + }, + &binary.Pow{ + FreeFloating: expected, + }, + &binary.ShiftLeft{ + FreeFloating: expected, + }, + &binary.ShiftRight{ + FreeFloating: expected, + }, + &binary.SmallerOrEqual{ + FreeFloating: expected, + }, + &binary.Smaller{ + FreeFloating: expected, + }, + &binary.Spaceship{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/expr/binary/t_meta_test.go b/node/expr/binary/t_meta_test.go deleted file mode 100644 index 95caac7..0000000 --- a/node/expr/binary/t_meta_test.go +++ /dev/null @@ -1,61 +0,0 @@ -package binary_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/expr/binary" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &binary.BitwiseAnd{}, - &binary.BitwiseOr{}, - &binary.BitwiseXor{}, - &binary.BooleanAnd{}, - &binary.BooleanOr{}, - &binary.Coalesce{}, - &binary.Concat{}, - &binary.Div{}, - &binary.Equal{}, - &binary.GreaterOrEqual{}, - &binary.Greater{}, - &binary.Identical{}, - &binary.LogicalAnd{}, - &binary.LogicalOr{}, - &binary.LogicalXor{}, - &binary.Minus{}, - &binary.Mod{}, - &binary.Mul{}, - &binary.NotEqual{}, - &binary.NotIdentical{}, - &binary.Plus{}, - &binary.Pow{}, - &binary.ShiftLeft{}, - &binary.ShiftRight{}, - &binary.SmallerOrEqual{}, - &binary.Smaller{}, - &binary.Spaceship{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/expr/binary/t_position_test.go b/node/expr/binary/t_position_test.go index 6c1fe07..079e380 100644 --- a/node/expr/binary/t_position_test.go +++ b/node/expr/binary/t_position_test.go @@ -3,6 +3,8 @@ package binary_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/binary/t_visitor_test.go b/node/expr/binary/t_visitor_test.go index a875cc5..7962e23 100644 --- a/node/expr/binary/t_visitor_test.go +++ b/node/expr/binary/t_visitor_test.go @@ -1,15 +1,13 @@ package binary_test import ( - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr/binary" "github.com/z7zmey/php-parser/walker" + "gotest.tools/assert" ) var nodesToTest = []struct { @@ -23,7 +21,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.BitwiseOr{ @@ -31,7 +29,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.BitwiseXor{ @@ -39,7 +37,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.BooleanAnd{ @@ -47,7 +45,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.BooleanOr{ @@ -55,7 +53,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Coalesce{ @@ -63,7 +61,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Concat{ @@ -71,7 +69,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Div{ @@ -79,7 +77,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Equal{ @@ -87,7 +85,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.GreaterOrEqual{ @@ -95,7 +93,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Greater{ @@ -103,7 +101,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Identical{ @@ -111,7 +109,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.LogicalAnd{ @@ -119,7 +117,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.LogicalOr{ @@ -127,7 +125,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.LogicalXor{ @@ -135,7 +133,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Minus{ @@ -143,7 +141,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Mod{ @@ -151,7 +149,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Mul{ @@ -159,7 +157,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.NotEqual{ @@ -167,7 +165,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.NotIdentical{ @@ -175,7 +173,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Plus{ @@ -183,7 +181,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Pow{ @@ -191,7 +189,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.ShiftLeft{ @@ -199,7 +197,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.ShiftRight{ @@ -207,7 +205,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.SmallerOrEqual{ @@ -215,7 +213,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Smaller{ @@ -223,7 +221,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, { &binary.Spaceship{ @@ -231,7 +229,7 @@ var nodesToTest = []struct { Right: &expr.Variable{}, }, []string{"Left", "Right"}, - map[string]interface{}{}, + nil, }, } @@ -253,31 +251,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestVisitor(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -288,9 +280,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/cast/n_cast_array.go b/node/expr/cast/n_cast_array.go index a9cdca6..f12458b 100644 --- a/node/expr/cast/n_cast_array.go +++ b/node/expr/cast/n_cast_array.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Array node type Array struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewArray node constructor func NewArray(Expr node.Node) *Array { return &Array{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Array) GetPosition() *position.Position { return n.Position } -func (n *Array) GetMeta() *meta.Collection { - return &n.Meta +func (n *Array) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_bool.go b/node/expr/cast/n_cast_bool.go index 6ee1ab8..a794df8 100644 --- a/node/expr/cast/n_cast_bool.go +++ b/node/expr/cast/n_cast_bool.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Bool node type Bool struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewBool node constructor func NewBool(Expr node.Node) *Bool { return &Bool{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Bool) GetPosition() *position.Position { return n.Position } -func (n *Bool) GetMeta() *meta.Collection { - return &n.Meta +func (n *Bool) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_double.go b/node/expr/cast/n_cast_double.go index 621ae30..61dcc43 100644 --- a/node/expr/cast/n_cast_double.go +++ b/node/expr/cast/n_cast_double.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Double node type Double struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewDouble node constructor func NewDouble(Expr node.Node) *Double { return &Double{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Double) GetPosition() *position.Position { return n.Position } -func (n *Double) GetMeta() *meta.Collection { - return &n.Meta +func (n *Double) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_int.go b/node/expr/cast/n_cast_int.go index f0ec5ef..fc3f98d 100644 --- a/node/expr/cast/n_cast_int.go +++ b/node/expr/cast/n_cast_int.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Int node type Int struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewInt node constructor func NewInt(Expr node.Node) *Int { return &Int{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Int) GetPosition() *position.Position { return n.Position } -func (n *Int) GetMeta() *meta.Collection { - return &n.Meta +func (n *Int) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_object.go b/node/expr/cast/n_cast_object.go index 35b2136..ea67ce2 100644 --- a/node/expr/cast/n_cast_object.go +++ b/node/expr/cast/n_cast_object.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Object node type Object struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewObject node constructor func NewObject(Expr node.Node) *Object { return &Object{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Object) GetPosition() *position.Position { return n.Position } -func (n *Object) GetMeta() *meta.Collection { - return &n.Meta +func (n *Object) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_string.go b/node/expr/cast/n_cast_string.go index 6e51ea6..68a09e2 100644 --- a/node/expr/cast/n_cast_string.go +++ b/node/expr/cast/n_cast_string.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // String node type String struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewString node constructor func NewString(Expr node.Node) *String { return &String{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *String) GetPosition() *position.Position { return n.Position } -func (n *String) GetMeta() *meta.Collection { - return &n.Meta +func (n *String) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/n_cast_unset.go b/node/expr/cast/n_cast_unset.go index 72c7ba6..a792daa 100644 --- a/node/expr/cast/n_cast_unset.go +++ b/node/expr/cast/n_cast_unset.go @@ -1,7 +1,7 @@ package cast import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Unset node type Unset struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewUnset node constructor func NewUnset(Expr node.Node) *Unset { return &Unset{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Unset) GetPosition() *position.Position { return n.Position } -func (n *Unset) GetMeta() *meta.Collection { - return &n.Meta +func (n *Unset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/cast/t_cast_test.go b/node/expr/cast/t_cast_test.go index 85e6bca..578266b 100644 --- a/node/expr/cast/t_cast_test.go +++ b/node/expr/cast/t_cast_test.go @@ -2,10 +2,9 @@ package cast_test import ( "bytes" - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" @@ -16,18 +15,6 @@ import ( "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - } -} - func TestArray(t *testing.T) { src := ` (array)$a;` @@ -78,12 +65,12 @@ func TestArray(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBool(t *testing.T) { @@ -136,12 +123,12 @@ func TestBool(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBoolShort(t *testing.T) { @@ -194,12 +181,12 @@ func TestBoolShort(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDouble(t *testing.T) { @@ -252,12 +239,12 @@ func TestDouble(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestCastFloat(t *testing.T) { @@ -310,12 +297,12 @@ func TestCastFloat(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestInt(t *testing.T) { @@ -368,12 +355,12 @@ func TestInt(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestIntShort(t *testing.T) { @@ -426,12 +413,12 @@ func TestIntShort(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestObject(t *testing.T) { @@ -484,12 +471,12 @@ func TestObject(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestString(t *testing.T) { @@ -542,12 +529,12 @@ func TestString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBinaryString(t *testing.T) { @@ -600,12 +587,12 @@ func TestBinaryString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUnset(t *testing.T) { @@ -658,10 +645,10 @@ func TestUnset(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/cast/t_freefloating_test.go b/node/expr/cast/t_freefloating_test.go new file mode 100644 index 0000000..ea53bf9 --- /dev/null +++ b/node/expr/cast/t_freefloating_test.go @@ -0,0 +1,57 @@ +package cast_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr/cast" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &cast.Array{ + FreeFloating: expected, + }, + &cast.Bool{ + FreeFloating: expected, + }, + &cast.Double{ + FreeFloating: expected, + }, + &cast.Int{ + FreeFloating: expected, + }, + &cast.Object{ + FreeFloating: expected, + }, + &cast.String{ + FreeFloating: expected, + }, + &cast.Unset{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/expr/cast/t_meta_test.go b/node/expr/cast/t_meta_test.go deleted file mode 100644 index 167b0ad..0000000 --- a/node/expr/cast/t_meta_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package cast_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/expr/cast" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &cast.Array{}, - &cast.Bool{}, - &cast.Double{}, - &cast.Int{}, - &cast.Object{}, - &cast.String{}, - &cast.Unset{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/expr/cast/t_position_test.go b/node/expr/cast/t_position_test.go index ef29ac6..9bd080c 100644 --- a/node/expr/cast/t_position_test.go +++ b/node/expr/cast/t_position_test.go @@ -3,6 +3,8 @@ package cast_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/cast/t_visitor_test.go b/node/expr/cast/t_visitor_test.go index f574936..684b78b 100644 --- a/node/expr/cast/t_visitor_test.go +++ b/node/expr/cast/t_visitor_test.go @@ -1,10 +1,9 @@ package cast_test import ( - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" @@ -22,49 +21,49 @@ var nodesToTest = []struct { Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.Bool{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.Double{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.Int{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.Object{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.String{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &cast.Unset{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, } @@ -86,31 +85,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestVisitor(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -121,9 +114,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/n_array.go b/node/expr/n_array.go index a407fde..8a323f4 100644 --- a/node/expr/n_array.go +++ b/node/expr/n_array.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Array node type Array struct { - Meta meta.Collection - Position *position.Position - Items []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node } // NewArray node constructor func NewArray(Items []node.Node) *Array { return &Array{ - Items: Items, + FreeFloating: nil, + Items: Items, } } @@ -31,8 +32,8 @@ func (n *Array) GetPosition() *position.Position { return n.Position } -func (n *Array) GetMeta() *meta.Collection { - return &n.Meta +func (n *Array) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_array_dim_fetch.go b/node/expr/n_array_dim_fetch.go index abe104e..0f54b13 100644 --- a/node/expr/n_array_dim_fetch.go +++ b/node/expr/n_array_dim_fetch.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ArrayDimFetch node type ArrayDimFetch struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Dim node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Dim node.Node } // NewArrayDimFetch node constructor func NewArrayDimFetch(Variable node.Node, Dim node.Node) *ArrayDimFetch { return &ArrayDimFetch{ - Variable: Variable, - Dim: Dim, + FreeFloating: nil, + Variable: Variable, + Dim: Dim, } } @@ -33,8 +34,8 @@ func (n *ArrayDimFetch) GetPosition() *position.Position { return n.Position } -func (n *ArrayDimFetch) GetMeta() *meta.Collection { - return &n.Meta +func (n *ArrayDimFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_array_item.go b/node/expr/n_array_item.go index 6ab5574..1ac202f 100644 --- a/node/expr/n_array_item.go +++ b/node/expr/n_array_item.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ArrayItem node type ArrayItem struct { - Meta meta.Collection - Position *position.Position - Key node.Node - Val node.Node + FreeFloating freefloating.Collection + Position *position.Position + Key node.Node + Val node.Node } // NewArrayItem node constructor func NewArrayItem(Key node.Node, Val node.Node) *ArrayItem { return &ArrayItem{ - Key: Key, - Val: Val, + FreeFloating: nil, + Key: Key, + Val: Val, } } @@ -33,8 +34,8 @@ func (n *ArrayItem) GetPosition() *position.Position { return n.Position } -func (n *ArrayItem) GetMeta() *meta.Collection { - return &n.Meta +func (n *ArrayItem) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_bitwise_not.go b/node/expr/n_bitwise_not.go index 62065dc..c56ce02 100644 --- a/node/expr/n_bitwise_not.go +++ b/node/expr/n_bitwise_not.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // BitwiseNot node type BitwiseNot struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewBitwiseNot node constructor func NewBitwiseNot(Expression node.Node) *BitwiseNot { return &BitwiseNot{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *BitwiseNot) GetPosition() *position.Position { return n.Position } -func (n *BitwiseNot) GetMeta() *meta.Collection { - return &n.Meta +func (n *BitwiseNot) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_boolean_not.go b/node/expr/n_boolean_not.go index 85438dd..6bc420d 100644 --- a/node/expr/n_boolean_not.go +++ b/node/expr/n_boolean_not.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // BooleanNot node type BooleanNot struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewBooleanNot node constructor func NewBooleanNot(Expression node.Node) *BooleanNot { return &BooleanNot{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *BooleanNot) GetPosition() *position.Position { return n.Position } -func (n *BooleanNot) GetMeta() *meta.Collection { - return &n.Meta +func (n *BooleanNot) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_class_const_fetch.go b/node/expr/n_class_const_fetch.go index 511d6b7..143ecb5 100644 --- a/node/expr/n_class_const_fetch.go +++ b/node/expr/n_class_const_fetch.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // ClassConstFetch node type ClassConstFetch struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Class node.Node ConstantName node.Node @@ -18,6 +18,7 @@ type ClassConstFetch struct { // NewClassConstFetch node constructor func NewClassConstFetch(Class node.Node, ConstantName node.Node) *ClassConstFetch { return &ClassConstFetch{ + FreeFloating: nil, Class: Class, ConstantName: ConstantName, } @@ -33,8 +34,8 @@ func (n *ClassConstFetch) GetPosition() *position.Position { return n.Position } -func (n *ClassConstFetch) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClassConstFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_clone.go b/node/expr/n_clone.go index 79688cc..a56c735 100644 --- a/node/expr/n_clone.go +++ b/node/expr/n_clone.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Clone node type Clone struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewClone node constructor func NewClone(Expression node.Node) *Clone { return &Clone{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Clone) GetPosition() *position.Position { return n.Position } -func (n *Clone) GetMeta() *meta.Collection { - return &n.Meta +func (n *Clone) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_closure.go b/node/expr/n_closure.go index e863df9..f4089da 100644 --- a/node/expr/n_closure.go +++ b/node/expr/n_closure.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Closure node type Closure struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position ReturnsRef bool Static bool @@ -23,6 +23,7 @@ type Closure struct { // NewClosure node constructor func NewClosure(Params []node.Node, ClosureUse *ClosureUse, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure { return &Closure{ + FreeFloating: nil, ReturnsRef: ReturnsRef, Static: Static, PhpDocComment: PhpDocComment, @@ -43,8 +44,8 @@ func (n *Closure) GetPosition() *position.Position { return n.Position } -func (n *Closure) GetMeta() *meta.Collection { - return &n.Meta +func (n *Closure) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_closure_use.go b/node/expr/n_closure_use.go index 24ab5fc..13f8da9 100644 --- a/node/expr/n_closure_use.go +++ b/node/expr/n_closure_use.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ClosureUse node type ClosureUse struct { - Meta meta.Collection - Position *position.Position - Uses []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Uses []node.Node } // NewClosureUse node constructor func NewClosureUse(Uses []node.Node) *ClosureUse { return &ClosureUse{ - Uses: Uses, + FreeFloating: nil, + Uses: Uses, } } @@ -31,8 +32,8 @@ func (n *ClosureUse) GetPosition() *position.Position { return n.Position } -func (n *ClosureUse) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClosureUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_const_fetch.go b/node/expr/n_const_fetch.go index f11ce1d..3a6e31a 100644 --- a/node/expr/n_const_fetch.go +++ b/node/expr/n_const_fetch.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ConstFetch node type ConstFetch struct { - Meta meta.Collection - Position *position.Position - Constant node.Node + FreeFloating freefloating.Collection + Position *position.Position + Constant node.Node } // NewConstFetch node constructor func NewConstFetch(Constant node.Node) *ConstFetch { return &ConstFetch{ - Constant: Constant, + FreeFloating: nil, + Constant: Constant, } } @@ -31,8 +32,8 @@ func (n *ConstFetch) GetPosition() *position.Position { return n.Position } -func (n *ConstFetch) GetMeta() *meta.Collection { - return &n.Meta +func (n *ConstFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_empty.go b/node/expr/n_empty.go index 47d57f5..c88c8d5 100644 --- a/node/expr/n_empty.go +++ b/node/expr/n_empty.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Empty node type Empty struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewEmpty node constructor func NewEmpty(Expression node.Node) *Empty { return &Empty{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Empty) GetPosition() *position.Position { return n.Position } -func (n *Empty) GetMeta() *meta.Collection { - return &n.Meta +func (n *Empty) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_error_suppress.go b/node/expr/n_error_suppress.go index 35179fc..2a258ee 100644 --- a/node/expr/n_error_suppress.go +++ b/node/expr/n_error_suppress.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ErrorSuppress node type ErrorSuppress struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewErrorSuppress node constructor func NewErrorSuppress(Expression node.Node) *ErrorSuppress { return &ErrorSuppress{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *ErrorSuppress) GetPosition() *position.Position { return n.Position } -func (n *ErrorSuppress) GetMeta() *meta.Collection { - return &n.Meta +func (n *ErrorSuppress) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_eval.go b/node/expr/n_eval.go index ee83c72..4373917 100644 --- a/node/expr/n_eval.go +++ b/node/expr/n_eval.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Eval node type Eval struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewEval node constructor func NewEval(Expression node.Node) *Eval { return &Eval{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Eval) GetPosition() *position.Position { return n.Position } -func (n *Eval) GetMeta() *meta.Collection { - return &n.Meta +func (n *Eval) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_exit.go b/node/expr/n_exit.go index c64b123..4ac708d 100644 --- a/node/expr/n_exit.go +++ b/node/expr/n_exit.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,16 +9,17 @@ import ( // Exit node type Exit struct { - Meta meta.Collection - Die bool - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Die bool + Position *position.Position + Expr node.Node } // NewExit node constructor func NewExit(Expr node.Node) *Exit { return &Exit{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -32,8 +33,8 @@ func (n *Exit) GetPosition() *position.Position { return n.Position } -func (n *Exit) GetMeta() *meta.Collection { - return &n.Meta +func (n *Exit) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_function_call.go b/node/expr/n_function_call.go index b10d331..404d74a 100644 --- a/node/expr/n_function_call.go +++ b/node/expr/n_function_call.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // FunctionCall node type FunctionCall struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Function node.Node ArgumentList *node.ArgumentList @@ -18,6 +18,7 @@ type FunctionCall struct { // NewFunctionCall node constructor func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall { return &FunctionCall{ + FreeFloating: nil, Function: Function, ArgumentList: ArgumentList, } @@ -33,8 +34,8 @@ func (n *FunctionCall) GetPosition() *position.Position { return n.Position } -func (n *FunctionCall) GetMeta() *meta.Collection { - return &n.Meta +func (n *FunctionCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_include.go b/node/expr/n_include.go index 0c9f76e..fff189d 100644 --- a/node/expr/n_include.go +++ b/node/expr/n_include.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Include node type Include struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewInclude node constructor func NewInclude(Expression node.Node) *Include { return &Include{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Include) GetPosition() *position.Position { return n.Position } -func (n *Include) GetMeta() *meta.Collection { - return &n.Meta +func (n *Include) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_include_once.go b/node/expr/n_include_once.go index b613453..d3b4d94 100644 --- a/node/expr/n_include_once.go +++ b/node/expr/n_include_once.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // IncludeOnce node type IncludeOnce struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewIncludeOnce node constructor func NewIncludeOnce(Expression node.Node) *IncludeOnce { return &IncludeOnce{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *IncludeOnce) GetPosition() *position.Position { return n.Position } -func (n *IncludeOnce) GetMeta() *meta.Collection { - return &n.Meta +func (n *IncludeOnce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_instance_of.go b/node/expr/n_instance_of.go index 15cd423..a2142e6 100644 --- a/node/expr/n_instance_of.go +++ b/node/expr/n_instance_of.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // InstanceOf node type InstanceOf struct { - Meta meta.Collection - Position *position.Position - Expr node.Node - Class node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node + Class node.Node } // NewInstanceOf node constructor func NewInstanceOf(Expr node.Node, Class node.Node) *InstanceOf { return &InstanceOf{ - Expr: Expr, - Class: Class, + FreeFloating: nil, + Expr: Expr, + Class: Class, } } @@ -33,8 +34,8 @@ func (n *InstanceOf) GetPosition() *position.Position { return n.Position } -func (n *InstanceOf) GetMeta() *meta.Collection { - return &n.Meta +func (n *InstanceOf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_isset.go b/node/expr/n_isset.go index c3064e7..61cf530 100644 --- a/node/expr/n_isset.go +++ b/node/expr/n_isset.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Isset node type Isset struct { - Meta meta.Collection - Position *position.Position - Variables []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variables []node.Node } // NewIsset node constructor func NewIsset(Variables []node.Node) *Isset { return &Isset{ - Variables: Variables, + FreeFloating: nil, + Variables: Variables, } } @@ -31,8 +32,8 @@ func (n *Isset) GetPosition() *position.Position { return n.Position } -func (n *Isset) GetMeta() *meta.Collection { - return &n.Meta +func (n *Isset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_list.go b/node/expr/n_list.go index cd691ef..2342ba0 100644 --- a/node/expr/n_list.go +++ b/node/expr/n_list.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // List node type List struct { - Meta meta.Collection - Position *position.Position - Items []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node } // NewList node constructor func NewList(Items []node.Node) *List { return &List{ - Items: Items, + FreeFloating: nil, + Items: Items, } } @@ -31,8 +32,8 @@ func (n *List) GetPosition() *position.Position { return n.Position } -func (n *List) GetMeta() *meta.Collection { - return &n.Meta +func (n *List) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_method_call.go b/node/expr/n_method_call.go index 12c0284..9536d79 100644 --- a/node/expr/n_method_call.go +++ b/node/expr/n_method_call.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // MethodCall node type MethodCall struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Variable node.Node Method node.Node @@ -19,6 +19,7 @@ type MethodCall struct { // NewMethodCall node constructor func NewMethodCall(Variable node.Node, Method node.Node, ArgumentList *node.ArgumentList) *MethodCall { return &MethodCall{ + FreeFloating: nil, Variable: Variable, Method: Method, ArgumentList: ArgumentList, @@ -35,8 +36,8 @@ func (n *MethodCall) GetPosition() *position.Position { return n.Position } -func (n *MethodCall) GetMeta() *meta.Collection { - return &n.Meta +func (n *MethodCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_new.go b/node/expr/n_new.go index 0d7a1d1..b8e84df 100644 --- a/node/expr/n_new.go +++ b/node/expr/n_new.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // New node type New struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Class node.Node ArgumentList *node.ArgumentList @@ -18,6 +18,7 @@ type New struct { // NewNew node constructor func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New { return &New{ + FreeFloating: nil, Class: Class, ArgumentList: ArgumentList, } @@ -33,8 +34,8 @@ func (n *New) GetPosition() *position.Position { return n.Position } -func (n *New) GetMeta() *meta.Collection { - return &n.Meta +func (n *New) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_post_dec.go b/node/expr/n_post_dec.go index fb8e732..027a5fa 100644 --- a/node/expr/n_post_dec.go +++ b/node/expr/n_post_dec.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // PostDec node type PostDec struct { - Meta meta.Collection - Position *position.Position - Variable node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node } // NewPostDec node constructor func NewPostDec(Variable node.Node) *PostDec { return &PostDec{ - Variable: Variable, + FreeFloating: nil, + Variable: Variable, } } @@ -31,8 +32,8 @@ func (n *PostDec) GetPosition() *position.Position { return n.Position } -func (n *PostDec) GetMeta() *meta.Collection { - return &n.Meta +func (n *PostDec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_post_inc.go b/node/expr/n_post_inc.go index eca9350..d5a37dd 100644 --- a/node/expr/n_post_inc.go +++ b/node/expr/n_post_inc.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // PostInc node type PostInc struct { - Meta meta.Collection - Position *position.Position - Variable node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node } // NewPostInc node constructor func NewPostInc(Variable node.Node) *PostInc { return &PostInc{ - Variable: Variable, + FreeFloating: nil, + Variable: Variable, } } @@ -31,8 +32,8 @@ func (n *PostInc) GetPosition() *position.Position { return n.Position } -func (n *PostInc) GetMeta() *meta.Collection { - return &n.Meta +func (n *PostInc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_pre_dec.go b/node/expr/n_pre_dec.go index 26854dc..87bc1bb 100644 --- a/node/expr/n_pre_dec.go +++ b/node/expr/n_pre_dec.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // PreDec node type PreDec struct { - Meta meta.Collection - Position *position.Position - Variable node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node } // NewPreDec node constructor func NewPreDec(Variable node.Node) *PreDec { return &PreDec{ - Variable: Variable, + FreeFloating: nil, + Variable: Variable, } } @@ -31,8 +32,8 @@ func (n *PreDec) GetPosition() *position.Position { return n.Position } -func (n *PreDec) GetMeta() *meta.Collection { - return &n.Meta +func (n *PreDec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_pre_inc.go b/node/expr/n_pre_inc.go index 072095b..3151130 100644 --- a/node/expr/n_pre_inc.go +++ b/node/expr/n_pre_inc.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // PreInc node type PreInc struct { - Meta meta.Collection - Position *position.Position - Variable node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node } // NewPreInc node constructor func NewPreInc(Variable node.Node) *PreInc { return &PreInc{ - Variable: Variable, + FreeFloating: nil, + Variable: Variable, } } @@ -31,8 +32,8 @@ func (n *PreInc) GetPosition() *position.Position { return n.Position } -func (n *PreInc) GetMeta() *meta.Collection { - return &n.Meta +func (n *PreInc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_print.go b/node/expr/n_print.go index 3cda268..d8e08b2 100644 --- a/node/expr/n_print.go +++ b/node/expr/n_print.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Print node type Print struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewPrint node constructor func NewPrint(Expression node.Node) *Print { return &Print{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Print) GetPosition() *position.Position { return n.Position } -func (n *Print) GetMeta() *meta.Collection { - return &n.Meta +func (n *Print) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_property_fetch.go b/node/expr/n_property_fetch.go index 80ef03b..89d8d91 100644 --- a/node/expr/n_property_fetch.go +++ b/node/expr/n_property_fetch.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // PropertyFetch node type PropertyFetch struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Property node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Property node.Node } // NewPropertyFetch node constructor func NewPropertyFetch(Variable node.Node, Property node.Node) *PropertyFetch { return &PropertyFetch{ - Variable: Variable, - Property: Property, + FreeFloating: nil, + Variable: Variable, + Property: Property, } } @@ -33,8 +34,8 @@ func (n *PropertyFetch) GetPosition() *position.Position { return n.Position } -func (n *PropertyFetch) GetMeta() *meta.Collection { - return &n.Meta +func (n *PropertyFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_reference.go b/node/expr/n_reference.go index 761d113..fbcc636 100644 --- a/node/expr/n_reference.go +++ b/node/expr/n_reference.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Reference node type Reference struct { - Meta meta.Collection - Position *position.Position - Variable node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node } // NewReference node constructor func NewReference(Variable node.Node) *Reference { return &Reference{ - Variable: Variable, + FreeFloating: nil, + Variable: Variable, } } @@ -31,8 +32,8 @@ func (n *Reference) GetPosition() *position.Position { return n.Position } -func (n *Reference) GetMeta() *meta.Collection { - return &n.Meta +func (n *Reference) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_require.go b/node/expr/n_require.go index 6252809..d25cb86 100644 --- a/node/expr/n_require.go +++ b/node/expr/n_require.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Require node type Require struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewRequire node constructor func NewRequire(Expression node.Node) *Require { return &Require{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *Require) GetPosition() *position.Position { return n.Position } -func (n *Require) GetMeta() *meta.Collection { - return &n.Meta +func (n *Require) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_require_once.go b/node/expr/n_require_once.go index 04f2722..9327c7a 100644 --- a/node/expr/n_require_once.go +++ b/node/expr/n_require_once.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // RequireOnce node type RequireOnce struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewRequireOnce node constructor func NewRequireOnce(Expression node.Node) *RequireOnce { return &RequireOnce{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *RequireOnce) GetPosition() *position.Position { return n.Position } -func (n *RequireOnce) GetMeta() *meta.Collection { - return &n.Meta +func (n *RequireOnce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_shell_exec.go b/node/expr/n_shell_exec.go index e426c7e..ac9ee1f 100644 --- a/node/expr/n_shell_exec.go +++ b/node/expr/n_shell_exec.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ShellExec node type ShellExec struct { - Meta meta.Collection - Position *position.Position - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node } // NewShellExec node constructor func NewShellExec(Parts []node.Node) *ShellExec { return &ShellExec{ - Parts: Parts, + FreeFloating: nil, + Parts: Parts, } } @@ -31,8 +32,8 @@ func (n *ShellExec) GetPosition() *position.Position { return n.Position } -func (n *ShellExec) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShellExec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_short_array.go b/node/expr/n_short_array.go index 8128cee..d03deac 100644 --- a/node/expr/n_short_array.go +++ b/node/expr/n_short_array.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ShortArray node type ShortArray struct { - Meta meta.Collection - Position *position.Position - Items []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node } // NewShortArray node constructor func NewShortArray(Items []node.Node) *ShortArray { return &ShortArray{ - Items: Items, + FreeFloating: nil, + Items: Items, } } @@ -31,8 +32,8 @@ func (n *ShortArray) GetPosition() *position.Position { return n.Position } -func (n *ShortArray) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShortArray) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_short_list.go b/node/expr/n_short_list.go index f76c6ac..22c6f8f 100644 --- a/node/expr/n_short_list.go +++ b/node/expr/n_short_list.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ShortList node type ShortList struct { - Meta meta.Collection - Position *position.Position - Items []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node } // NewShortList node constructor func NewShortList(Items []node.Node) *ShortList { return &ShortList{ - Items: Items, + FreeFloating: nil, + Items: Items, } } @@ -31,8 +32,8 @@ func (n *ShortList) GetPosition() *position.Position { return n.Position } -func (n *ShortList) GetMeta() *meta.Collection { - return &n.Meta +func (n *ShortList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_static_call.go b/node/expr/n_static_call.go index cf0c0aa..c3790d6 100644 --- a/node/expr/n_static_call.go +++ b/node/expr/n_static_call.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // StaticCall node type StaticCall struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Class node.Node Call node.Node @@ -19,6 +19,7 @@ type StaticCall struct { // NewStaticCall node constructor func NewStaticCall(Class node.Node, Call node.Node, ArgumentList *node.ArgumentList) *StaticCall { return &StaticCall{ + FreeFloating: nil, Class: Class, Call: Call, ArgumentList: ArgumentList, @@ -35,8 +36,8 @@ func (n *StaticCall) GetPosition() *position.Position { return n.Position } -func (n *StaticCall) GetMeta() *meta.Collection { - return &n.Meta +func (n *StaticCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_static_property_fetch.go b/node/expr/n_static_property_fetch.go index 351809c..b0a56a5 100644 --- a/node/expr/n_static_property_fetch.go +++ b/node/expr/n_static_property_fetch.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // StaticPropertyFetch node type StaticPropertyFetch struct { - Meta meta.Collection - Position *position.Position - Class node.Node - Property node.Node + FreeFloating freefloating.Collection + Position *position.Position + Class node.Node + Property node.Node } // NewStaticPropertyFetch node constructor func NewStaticPropertyFetch(Class node.Node, Property node.Node) *StaticPropertyFetch { return &StaticPropertyFetch{ - Class: Class, - Property: Property, + FreeFloating: nil, + Class: Class, + Property: Property, } } @@ -33,8 +34,8 @@ func (n *StaticPropertyFetch) GetPosition() *position.Position { return n.Position } -func (n *StaticPropertyFetch) GetMeta() *meta.Collection { - return &n.Meta +func (n *StaticPropertyFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_ternary.go b/node/expr/n_ternary.go index b9c9b9d..b6bca7c 100644 --- a/node/expr/n_ternary.go +++ b/node/expr/n_ternary.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // Ternary node type Ternary struct { - Meta meta.Collection - Position *position.Position - Condition node.Node - IfTrue node.Node - IfFalse node.Node + FreeFloating freefloating.Collection + Position *position.Position + Condition node.Node + IfTrue node.Node + IfFalse node.Node } // NewTernary node constructor func NewTernary(Condition node.Node, IfTrue node.Node, IfFalse node.Node) *Ternary { return &Ternary{ - Condition: Condition, - IfTrue: IfTrue, - IfFalse: IfFalse, + FreeFloating: nil, + Condition: Condition, + IfTrue: IfTrue, + IfFalse: IfFalse, } } @@ -35,8 +36,8 @@ func (n *Ternary) GetPosition() *position.Position { return n.Position } -func (n *Ternary) GetMeta() *meta.Collection { - return &n.Meta +func (n *Ternary) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_unary_minus.go b/node/expr/n_unary_minus.go index ba5e774..9c1f416 100644 --- a/node/expr/n_unary_minus.go +++ b/node/expr/n_unary_minus.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // UnaryMinus node type UnaryMinus struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewUnaryMinus node constructor func NewUnaryMinus(Expression node.Node) *UnaryMinus { return &UnaryMinus{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *UnaryMinus) GetPosition() *position.Position { return n.Position } -func (n *UnaryMinus) GetMeta() *meta.Collection { - return &n.Meta +func (n *UnaryMinus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_unary_plus.go b/node/expr/n_unary_plus.go index 54da742..891766f 100644 --- a/node/expr/n_unary_plus.go +++ b/node/expr/n_unary_plus.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // UnaryPlus node type UnaryPlus struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewUnaryPlus node constructor func NewUnaryPlus(Expression node.Node) *UnaryPlus { return &UnaryPlus{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *UnaryPlus) GetPosition() *position.Position { return n.Position } -func (n *UnaryPlus) GetMeta() *meta.Collection { - return &n.Meta +func (n *UnaryPlus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_variable.go b/node/expr/n_variable.go index f0c269d..686c510 100644 --- a/node/expr/n_variable.go +++ b/node/expr/n_variable.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Variable node type Variable struct { - Meta meta.Collection - Position *position.Position - VarName node.Node + FreeFloating freefloating.Collection + Position *position.Position + VarName node.Node } // NewVariable node constructor func NewVariable(VarName node.Node) *Variable { return &Variable{ - VarName: VarName, + FreeFloating: nil, + VarName: VarName, } } @@ -31,8 +32,8 @@ func (n *Variable) GetPosition() *position.Position { return n.Position } -func (n *Variable) GetMeta() *meta.Collection { - return &n.Meta +func (n *Variable) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_yield.go b/node/expr/n_yield.go index fd71f53..a4499ad 100644 --- a/node/expr/n_yield.go +++ b/node/expr/n_yield.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Yield node type Yield struct { - Meta meta.Collection - Position *position.Position - Key node.Node - Value node.Node + FreeFloating freefloating.Collection + Position *position.Position + Key node.Node + Value node.Node } // NewYield node constructor func NewYield(Key node.Node, Value node.Node) *Yield { return &Yield{ - Key: Key, - Value: Value, + FreeFloating: nil, + Key: Key, + Value: Value, } } @@ -33,8 +34,8 @@ func (n *Yield) GetPosition() *position.Position { return n.Position } -func (n *Yield) GetMeta() *meta.Collection { - return &n.Meta +func (n *Yield) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/n_yield_from.go b/node/expr/n_yield_from.go index 758de2c..e1fcea6 100644 --- a/node/expr/n_yield_from.go +++ b/node/expr/n_yield_from.go @@ -1,7 +1,7 @@ package expr import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // YieldFrom node type YieldFrom struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewYieldFrom node constructor func NewYieldFrom(Expression node.Node) *YieldFrom { return &YieldFrom{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -31,8 +32,8 @@ func (n *YieldFrom) GetPosition() *position.Position { return n.Position } -func (n *YieldFrom) GetMeta() *meta.Collection { - return &n.Meta +func (n *YieldFrom) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/expr/t_array_dim_fetch_test.go b/node/expr/t_array_dim_fetch_test.go index 8ead727..2b9abb6 100644 --- a/node/expr/t_array_dim_fetch_test.go +++ b/node/expr/t_array_dim_fetch_test.go @@ -2,33 +2,19 @@ package expr_test import ( "bytes" - "reflect" "testing" - "github.com/z7zmey/php-parser/node/expr" - "github.com/z7zmey/php-parser/position" - - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/node/scalar" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - } -} - func TestArrayDimFetch(t *testing.T) { src := ` $a[1];` @@ -88,12 +74,12 @@ func TestArrayDimFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestArrayDimFetchNested(t *testing.T) { @@ -172,10 +158,10 @@ func TestArrayDimFetchNested(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_array_test.go b/node/expr/t_array_test.go index 5b482c2..a9f39e3 100644 --- a/node/expr/t_array_test.go +++ b/node/expr/t_array_test.go @@ -4,15 +4,15 @@ import ( "bytes" "testing" - "github.com/z7zmey/php-parser/node/scalar" - "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/node/expr" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) func TestArray(t *testing.T) { @@ -49,12 +49,12 @@ func TestArray(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestArrayItem(t *testing.T) { @@ -109,12 +109,12 @@ func TestArrayItem(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestArrayItems(t *testing.T) { @@ -212,10 +212,10 @@ func TestArrayItems(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_bitwise_not_test.go b/node/expr/t_bitwise_not_test.go index ed65377..56968f7 100644 --- a/node/expr/t_bitwise_not_test.go +++ b/node/expr/t_bitwise_not_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestBitwiseNot(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_boolean_not_test.go b/node/expr/t_boolean_not_test.go index 0fc2cd6..1064828 100644 --- a/node/expr/t_boolean_not_test.go +++ b/node/expr/t_boolean_not_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestBooleanNot(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_class_const_fetch_test.go b/node/expr/t_class_const_fetch_test.go index 41bcc21..6f035aa 100644 --- a/node/expr/t_class_const_fetch_test.go +++ b/node/expr/t_class_const_fetch_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -76,12 +78,12 @@ func TestClassConstFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticClassConstFetch(t *testing.T) { @@ -135,10 +137,10 @@ func TestStaticClassConstFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_clone_test.go b/node/expr/t_clone_test.go index 847b042..3804b9b 100644 --- a/node/expr/t_clone_test.go +++ b/node/expr/t_clone_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,12 +65,12 @@ func TestCloneBrackets(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClone(t *testing.T) { @@ -121,10 +123,10 @@ func TestClone(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_closure_test.go b/node/expr/t_closure_test.go index c7a2769..5c3bfc8 100644 --- a/node/expr/t_closure_test.go +++ b/node/expr/t_closure_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -52,12 +54,12 @@ func TestClosure(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClosureUse(t *testing.T) { @@ -205,12 +207,12 @@ func TestClosureUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClosureUse2(t *testing.T) { @@ -358,12 +360,12 @@ func TestClosureUse2(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClosureReturnType(t *testing.T) { @@ -422,5 +424,5 @@ func TestClosureReturnType(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_const_fetch_test.go b/node/expr/t_const_fetch_test.go index ffbafdc..85ccf30 100644 --- a/node/expr/t_const_fetch_test.go +++ b/node/expr/t_const_fetch_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/position" @@ -67,12 +69,12 @@ func TestConstFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestConstFetchRelative(t *testing.T) { @@ -127,12 +129,12 @@ func TestConstFetchRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestConstFetchFullyQualified(t *testing.T) { @@ -187,10 +189,10 @@ func TestConstFetchFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_empty_test.go b/node/expr/t_empty_test.go index 7cd964a..0f277b5 100644 --- a/node/expr/t_empty_test.go +++ b/node/expr/t_empty_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestEmpty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_error_supress_test.go b/node/expr/t_error_supress_test.go index 9081de2..4e956e9 100644 --- a/node/expr/t_error_supress_test.go +++ b/node/expr/t_error_supress_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestErrorSuppress(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_eval_test.go b/node/expr/t_eval_test.go index f2c305c..ba21ff9 100644 --- a/node/expr/t_eval_test.go +++ b/node/expr/t_eval_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestEval(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_exit_test.go b/node/expr/t_exit_test.go index 5a71604..80596f2 100644 --- a/node/expr/t_exit_test.go +++ b/node/expr/t_exit_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -47,12 +49,12 @@ func TestExit(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestExitEmpty(t *testing.T) { @@ -89,12 +91,12 @@ func TestExitEmpty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) - // php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") - // php5parser.Parse() - // actual = php5parser.GetRootNode() - // assertEqual(t, expected, actual) + php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") + php5parser.Parse() + actual = php5parser.GetRootNode() + assert.DeepEqual(t, expected, actual) } func TestExitExpr(t *testing.T) { @@ -148,12 +150,12 @@ func TestExitExpr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDie(t *testing.T) { @@ -190,12 +192,12 @@ func TestDie(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDieEmpty(t *testing.T) { @@ -232,12 +234,12 @@ func TestDieEmpty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDieExpr(t *testing.T) { @@ -291,10 +293,10 @@ func TestDieExpr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_freefloating_test.go b/node/expr/t_freefloating_test.go new file mode 100644 index 0000000..92291d1 --- /dev/null +++ b/node/expr/t_freefloating_test.go @@ -0,0 +1,162 @@ +package expr_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &expr.ArrayDimFetch{ + FreeFloating: expected, + }, + &expr.ArrayItem{ + FreeFloating: expected, + }, + &expr.Array{ + FreeFloating: expected, + }, + &expr.BitwiseNot{ + FreeFloating: expected, + }, + &expr.BooleanNot{ + FreeFloating: expected, + }, + &expr.ClassConstFetch{ + FreeFloating: expected, + }, + &expr.Clone{ + FreeFloating: expected, + }, + &expr.ClosureUse{ + FreeFloating: expected, + }, + &expr.Closure{ + FreeFloating: expected, + }, + &expr.ConstFetch{ + FreeFloating: expected, + }, + &expr.Empty{ + FreeFloating: expected, + }, + &expr.ErrorSuppress{ + FreeFloating: expected, + }, + &expr.Eval{ + FreeFloating: expected, + }, + &expr.Exit{ + FreeFloating: expected, + }, + &expr.FunctionCall{ + FreeFloating: expected, + }, + &expr.IncludeOnce{ + FreeFloating: expected, + }, + &expr.Include{ + FreeFloating: expected, + }, + &expr.InstanceOf{ + FreeFloating: expected, + }, + &expr.Isset{ + FreeFloating: expected, + }, + &expr.List{ + FreeFloating: expected, + }, + &expr.MethodCall{ + FreeFloating: expected, + }, + &expr.New{ + FreeFloating: expected, + }, + &expr.PostDec{ + FreeFloating: expected, + }, + &expr.PostInc{ + FreeFloating: expected, + }, + &expr.PreDec{ + FreeFloating: expected, + }, + &expr.PreInc{ + FreeFloating: expected, + }, + &expr.Print{ + FreeFloating: expected, + }, + &expr.PropertyFetch{ + FreeFloating: expected, + }, + &expr.Reference{ + FreeFloating: expected, + }, + &expr.RequireOnce{ + FreeFloating: expected, + }, + &expr.Require{ + FreeFloating: expected, + }, + &expr.ShellExec{ + FreeFloating: expected, + }, + &expr.ShortArray{ + FreeFloating: expected, + }, + &expr.ShortList{ + FreeFloating: expected, + }, + &expr.StaticCall{ + FreeFloating: expected, + }, + &expr.StaticPropertyFetch{ + FreeFloating: expected, + }, + &expr.Ternary{ + FreeFloating: expected, + }, + &expr.UnaryMinus{ + FreeFloating: expected, + }, + &expr.UnaryPlus{ + FreeFloating: expected, + }, + &expr.Variable{ + FreeFloating: expected, + }, + &expr.YieldFrom{ + FreeFloating: expected, + }, + &expr.Yield{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/expr/t_function_call_test.go b/node/expr/t_function_call_test.go index dda0027..c6e0fea 100644 --- a/node/expr/t_function_call_test.go +++ b/node/expr/t_function_call_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -78,12 +80,12 @@ func TestFunctionCall(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionCallRelative(t *testing.T) { @@ -146,12 +148,12 @@ func TestFunctionCallRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionFullyQualified(t *testing.T) { @@ -235,12 +237,12 @@ func TestFunctionFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionCallVar(t *testing.T) { @@ -338,12 +340,12 @@ func TestFunctionCallVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionCallExprArg(t *testing.T) { @@ -452,10 +454,10 @@ func TestFunctionCallExprArg(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_inc_dec_test.go b/node/expr/t_inc_dec_test.go index 4af1968..b574f20 100644 --- a/node/expr/t_inc_dec_test.go +++ b/node/expr/t_inc_dec_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,12 +65,12 @@ func TestPostDec(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPostInc(t *testing.T) { @@ -121,12 +123,12 @@ func TestPostInc(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPreDec(t *testing.T) { @@ -179,12 +181,12 @@ func TestPreDec(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPreInc(t *testing.T) { @@ -237,10 +239,10 @@ func TestPreInc(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_include_test.go b/node/expr/t_include_test.go index 16f6e45..7f5d674 100644 --- a/node/expr/t_include_test.go +++ b/node/expr/t_include_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,12 +65,12 @@ func TestInclude(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestIncludeOnce(t *testing.T) { @@ -121,12 +123,12 @@ func TestIncludeOnce(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestRequire(t *testing.T) { @@ -179,12 +181,12 @@ func TestRequire(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestRequireOnce(t *testing.T) { @@ -237,10 +239,10 @@ func TestRequireOnce(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_instance_of_test.go b/node/expr/t_instance_of_test.go index 69c1e58..c6ede50 100644 --- a/node/expr/t_instance_of_test.go +++ b/node/expr/t_instance_of_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -84,12 +86,12 @@ func TestInstanceOf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestInstanceOfRelative(t *testing.T) { @@ -161,12 +163,12 @@ func TestInstanceOfRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestInstanceOfFullyQualified(t *testing.T) { @@ -238,10 +240,10 @@ func TestInstanceOfFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_isset_test.go b/node/expr/t_isset_test.go index a449125..1643e63 100644 --- a/node/expr/t_isset_test.go +++ b/node/expr/t_isset_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -65,12 +67,12 @@ func TestIsset(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestIssetVariables(t *testing.T) { @@ -142,10 +144,10 @@ func TestIssetVariables(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_list_test.go b/node/expr/t_list_test.go index 365912d..fe4684e 100644 --- a/node/expr/t_list_test.go +++ b/node/expr/t_list_test.go @@ -4,15 +4,15 @@ import ( "bytes" "testing" - "github.com/z7zmey/php-parser/node/expr/assign" - "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/node/expr" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) func TestEmptyList(t *testing.T) { @@ -74,12 +74,12 @@ func TestEmptyList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestList(t *testing.T) { @@ -167,12 +167,12 @@ func TestList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestListArrayIndex(t *testing.T) { @@ -268,12 +268,12 @@ func TestListArrayIndex(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestListList(t *testing.T) { @@ -379,12 +379,12 @@ func TestListList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestListEmptyItem(t *testing.T) { @@ -473,12 +473,12 @@ func TestListEmptyItem(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestListEmptyItems(t *testing.T) { @@ -569,10 +569,10 @@ func TestListEmptyItems(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_meta_test.go b/node/expr/t_meta_test.go deleted file mode 100644 index fd80d3b..0000000 --- a/node/expr/t_meta_test.go +++ /dev/null @@ -1,76 +0,0 @@ -package expr_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/expr" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &expr.ArrayDimFetch{}, - &expr.ArrayItem{}, - &expr.Array{}, - &expr.BitwiseNot{}, - &expr.BooleanNot{}, - &expr.ClassConstFetch{}, - &expr.Clone{}, - &expr.ClosureUse{}, - &expr.Closure{}, - &expr.ConstFetch{}, - &expr.Empty{}, - &expr.ErrorSuppress{}, - &expr.Eval{}, - &expr.Exit{}, - &expr.FunctionCall{}, - &expr.IncludeOnce{}, - &expr.Include{}, - &expr.InstanceOf{}, - &expr.Isset{}, - &expr.List{}, - &expr.MethodCall{}, - &expr.New{}, - &expr.PostDec{}, - &expr.PostInc{}, - &expr.PreDec{}, - &expr.PreInc{}, - &expr.Print{}, - &expr.PropertyFetch{}, - &expr.Reference{}, - &expr.RequireOnce{}, - &expr.Require{}, - &expr.ShellExec{}, - &expr.ShortArray{}, - &expr.ShortList{}, - &expr.StaticCall{}, - &expr.StaticPropertyFetch{}, - &expr.Ternary{}, - &expr.UnaryMinus{}, - &expr.UnaryPlus{}, - &expr.Variable{}, - &expr.YieldFrom{}, - &expr.Yield{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/expr/t_method_call_test.go b/node/expr/t_method_call_test.go index 6919d1e..0d2e7d9 100644 --- a/node/expr/t_method_call_test.go +++ b/node/expr/t_method_call_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -80,10 +82,10 @@ func TestMethodCall(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_new_test.go b/node/expr/t_new_test.go index f4abdf0..3b2f0ab 100644 --- a/node/expr/t_new_test.go +++ b/node/expr/t_new_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -67,12 +69,12 @@ func TestNew(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNewRelative(t *testing.T) { @@ -135,12 +137,12 @@ func TestNewRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNewFullyQualified(t *testing.T) { @@ -203,12 +205,12 @@ func TestNewFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNewAnonymous(t *testing.T) { @@ -318,5 +320,5 @@ func TestNewAnonymous(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_position_test.go b/node/expr/t_position_test.go index 2d673ce..cfaa14a 100644 --- a/node/expr/t_position_test.go +++ b/node/expr/t_position_test.go @@ -3,6 +3,8 @@ package expr_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/t_print_test.go b/node/expr/t_print_test.go index c064cd7..f2c54da 100644 --- a/node/expr/t_print_test.go +++ b/node/expr/t_print_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,10 +65,10 @@ func TestPrint(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_property_fetch_test.go b/node/expr/t_property_fetch_test.go index 9aefb29..fc9efa7 100644 --- a/node/expr/t_property_fetch_test.go +++ b/node/expr/t_property_fetch_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -72,10 +74,10 @@ func TestPropertyFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_reference_test.go b/node/expr/t_reference_test.go index 611c204..93be36e 100644 --- a/node/expr/t_reference_test.go +++ b/node/expr/t_reference_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -107,10 +109,10 @@ func TestForeachWithRef(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_shell_exec_test.go b/node/expr/t_shell_exec_test.go index be1c92f..1a31728 100644 --- a/node/expr/t_shell_exec_test.go +++ b/node/expr/t_shell_exec_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -76,10 +78,10 @@ func TestShellExec(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_short_array_test.go b/node/expr/t_short_array_test.go index f4617ac..2561e63 100644 --- a/node/expr/t_short_array_test.go +++ b/node/expr/t_short_array_test.go @@ -4,15 +4,15 @@ import ( "bytes" "testing" - "github.com/z7zmey/php-parser/node/scalar" - "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/node/expr" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) func TestShortArray(t *testing.T) { @@ -49,12 +49,12 @@ func TestShortArray(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShortArrayItem(t *testing.T) { @@ -109,12 +109,12 @@ func TestShortArrayItem(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShortArrayItems(t *testing.T) { @@ -212,10 +212,10 @@ func TestShortArrayItems(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_short_list_test.go b/node/expr/t_short_list_test.go index 5041800..4a83933 100644 --- a/node/expr/t_short_list_test.go +++ b/node/expr/t_short_list_test.go @@ -4,14 +4,14 @@ import ( "bytes" "testing" - "github.com/z7zmey/php-parser/node/expr/assign" - "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/node/expr" + "gotest.tools/assert" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) func TestShortList(t *testing.T) { @@ -99,7 +99,7 @@ func TestShortList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShortListArrayIndex(t *testing.T) { @@ -195,7 +195,7 @@ func TestShortListArrayIndex(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestShortListList(t *testing.T) { @@ -301,5 +301,5 @@ func TestShortListList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_static_call_test.go b/node/expr/t_static_call_test.go index bec83ae..8ae9395 100644 --- a/node/expr/t_static_call_test.go +++ b/node/expr/t_static_call_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -84,12 +86,12 @@ func TestStaticCall(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticCallRelative(t *testing.T) { @@ -161,12 +163,12 @@ func TestStaticCallRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticCallFullyQualified(t *testing.T) { @@ -238,12 +240,12 @@ func TestStaticCallFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticCallVar(t *testing.T) { @@ -323,12 +325,12 @@ func TestStaticCallVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticCallVarVar(t *testing.T) { @@ -406,10 +408,10 @@ func TestStaticCallVarVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_static_property_fetch_test.go b/node/expr/t_static_property_fetch_test.go index 10e8d90..8a89e84 100644 --- a/node/expr/t_static_property_fetch_test.go +++ b/node/expr/t_static_property_fetch_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -83,12 +85,12 @@ func TestStaticPropertyFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticPropertyFetchRelative(t *testing.T) { @@ -160,12 +162,12 @@ func TestStaticPropertyFetchRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticPropertyFetchFullyQualified(t *testing.T) { @@ -237,10 +239,10 @@ func TestStaticPropertyFetchFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_ternary_test.go b/node/expr/t_ternary_test.go index 57cb430..8a349f4 100644 --- a/node/expr/t_ternary_test.go +++ b/node/expr/t_ternary_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -97,12 +99,12 @@ func TestTernary(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTernarySimple(t *testing.T) { @@ -172,12 +174,12 @@ func TestTernarySimple(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTernaryNestedTrue(t *testing.T) { @@ -306,12 +308,12 @@ func TestTernaryNestedTrue(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTernaryNestedCond(t *testing.T) { @@ -440,10 +442,10 @@ func TestTernaryNestedCond(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_unary_test.go b/node/expr/t_unary_test.go index e05b6a6..fd6079b 100644 --- a/node/expr/t_unary_test.go +++ b/node/expr/t_unary_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -63,12 +65,12 @@ func TestUnaryMinus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUnaryPlus(t *testing.T) { @@ -121,10 +123,10 @@ func TestUnaryPlus(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_variable_test.go b/node/expr/t_variable_test.go index 679e3af..d6ffbbe 100644 --- a/node/expr/t_variable_test.go +++ b/node/expr/t_variable_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -55,12 +57,12 @@ func TestVariable(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestVariableVariable(t *testing.T) { @@ -113,10 +115,10 @@ func TestVariableVariable(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/expr/t_visitor_test.go b/node/expr/t_visitor_test.go index a8bc087..ab28817 100644 --- a/node/expr/t_visitor_test.go +++ b/node/expr/t_visitor_test.go @@ -1,17 +1,16 @@ package expr_test import ( - "reflect" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/scalar" - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/walker" @@ -28,7 +27,7 @@ var nodesToTest = []struct { Dim: &scalar.Lnumber{Value: "1"}, }, []string{"Variable", "Dim"}, - map[string]interface{}{}, + nil, }, { &expr.ArrayItem{ @@ -36,7 +35,7 @@ var nodesToTest = []struct { Val: &scalar.Lnumber{Value: "1"}, }, []string{"Key", "Val"}, - map[string]interface{}{}, + nil, }, { &expr.Array{ @@ -45,21 +44,21 @@ var nodesToTest = []struct { }, }, []string{"Items"}, - map[string]interface{}{}, + nil, }, { &expr.BitwiseNot{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.BooleanNot{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.ClassConstFetch{ @@ -67,14 +66,14 @@ var nodesToTest = []struct { ConstantName: &node.Identifier{Value: "foo"}, }, []string{"Class", "ConstantName"}, - map[string]interface{}{}, + nil, }, { &expr.Clone{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.ClosureUse{ @@ -83,7 +82,7 @@ var nodesToTest = []struct { }, }, []string{"Uses"}, - map[string]interface{}{}, + nil, }, { &expr.Closure{ @@ -103,28 +102,28 @@ var nodesToTest = []struct { Constant: &node.Identifier{Value: "foo"}, }, []string{"Constant"}, - map[string]interface{}{}, + nil, }, { &expr.Empty{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.ErrorSuppress{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Eval{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Exit{ @@ -140,21 +139,21 @@ var nodesToTest = []struct { ArgumentList: &node.ArgumentList{}, }, []string{"Function", "ArgumentList"}, - map[string]interface{}{}, + nil, }, { &expr.IncludeOnce{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Include{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.InstanceOf{ @@ -162,7 +161,7 @@ var nodesToTest = []struct { Class: &name.Name{}, }, []string{"Expr", "Class"}, - map[string]interface{}{}, + nil, }, { &expr.Isset{ @@ -171,7 +170,7 @@ var nodesToTest = []struct { }, }, []string{"Variables"}, - map[string]interface{}{}, + nil, }, { &expr.List{ @@ -180,7 +179,7 @@ var nodesToTest = []struct { }, }, []string{"Items"}, - map[string]interface{}{}, + nil, }, { &expr.MethodCall{ @@ -189,7 +188,7 @@ var nodesToTest = []struct { ArgumentList: &node.ArgumentList{}, }, []string{"Variable", "Method", "ArgumentList"}, - map[string]interface{}{}, + nil, }, { &expr.New{ @@ -197,42 +196,42 @@ var nodesToTest = []struct { ArgumentList: &node.ArgumentList{}, }, []string{"Class", "ArgumentList"}, - map[string]interface{}{}, + nil, }, { &expr.PostDec{ Variable: &expr.Variable{}, }, []string{"Variable"}, - map[string]interface{}{}, + nil, }, { &expr.PostInc{ Variable: &expr.Variable{}, }, []string{"Variable"}, - map[string]interface{}{}, + nil, }, { &expr.PreDec{ Variable: &expr.Variable{}, }, []string{"Variable"}, - map[string]interface{}{}, + nil, }, { &expr.PreInc{ Variable: &expr.Variable{}, }, []string{"Variable"}, - map[string]interface{}{}, + nil, }, { &expr.Print{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.PropertyFetch{ @@ -240,28 +239,28 @@ var nodesToTest = []struct { Property: &node.Identifier{Value: "foo"}, }, []string{"Variable", "Property"}, - map[string]interface{}{}, + nil, }, { &expr.Reference{ Variable: &expr.Variable{}, }, []string{"Variable"}, - map[string]interface{}{}, + nil, }, { &expr.RequireOnce{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Require{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.ShellExec{ @@ -270,7 +269,7 @@ var nodesToTest = []struct { }, }, []string{"Parts"}, - map[string]interface{}{}, + nil, }, { &expr.ShortArray{ @@ -279,7 +278,7 @@ var nodesToTest = []struct { }, }, []string{"Items"}, - map[string]interface{}{}, + nil, }, { &expr.ShortList{ @@ -288,7 +287,7 @@ var nodesToTest = []struct { }, }, []string{"Items"}, - map[string]interface{}{}, + nil, }, { &expr.StaticCall{ @@ -297,7 +296,7 @@ var nodesToTest = []struct { ArgumentList: &node.ArgumentList{}, }, []string{"Class", "Call", "ArgumentList"}, - map[string]interface{}{}, + nil, }, { &expr.StaticPropertyFetch{ @@ -305,7 +304,7 @@ var nodesToTest = []struct { Property: &node.Identifier{Value: "foo"}, }, []string{"Class", "Property"}, - map[string]interface{}{}, + nil, }, { &expr.Ternary{ @@ -314,33 +313,33 @@ var nodesToTest = []struct { IfFalse: &expr.Variable{}, }, []string{"Condition", "IfTrue", "IfFalse"}, - map[string]interface{}{}, + nil, }, { &expr.UnaryMinus{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.UnaryPlus{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Variable{VarName: &node.Identifier{Value: "a"}}, []string{"VarName"}, - map[string]interface{}{}, + nil, }, { &expr.YieldFrom{ Expr: &expr.Variable{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &expr.Yield{ @@ -348,7 +347,7 @@ var nodesToTest = []struct { Value: &expr.Variable{}, }, []string{"Key", "Value"}, - map[string]interface{}{}, + nil, }, } @@ -370,16 +369,13 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -391,10 +387,7 @@ func TestVisitor(t *testing.T) { expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -405,9 +398,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/expr/t_yield_test.go b/node/expr/t_yield_test.go index 831ba00..d61b2fe 100644 --- a/node/expr/t_yield_test.go +++ b/node/expr/t_yield_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -47,12 +49,12 @@ func TestYield(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestYieldVal(t *testing.T) { @@ -105,12 +107,12 @@ func TestYieldVal(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestYieldKeyVal(t *testing.T) { @@ -180,12 +182,12 @@ func TestYieldKeyVal(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestYieldExpr(t *testing.T) { @@ -230,12 +232,12 @@ func TestYieldExpr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestYieldKeyExpr(t *testing.T) { @@ -297,12 +299,12 @@ func TestYieldKeyExpr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestYieldFrom(t *testing.T) { @@ -355,5 +357,5 @@ func TestYieldFrom(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/n_argument.go b/node/n_argument.go index c88a4d6..c175823 100644 --- a/node/n_argument.go +++ b/node/n_argument.go @@ -1,26 +1,27 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Argument node type Argument struct { - Meta meta.Collection - Position *position.Position - Variadic bool // if ... before variable - IsReference bool // if & before variable - Expr Node // Exression + FreeFloating freefloating.Collection + Position *position.Position + Variadic bool // if ... before variable + IsReference bool // if & before variable + Expr Node // Exression } // NewArgument node constructor func NewArgument(Expression Node, Variadic bool, IsReference bool) *Argument { return &Argument{ - Variadic: Variadic, - IsReference: IsReference, - Expr: Expression, + FreeFloating: nil, + Variadic: Variadic, + IsReference: IsReference, + Expr: Expression, } } @@ -34,8 +35,8 @@ func (n *Argument) GetPosition() *position.Position { return n.Position } -func (n *Argument) GetMeta() *meta.Collection { - return &n.Meta +func (n *Argument) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/n_argument_list.go b/node/n_argument_list.go index ecfa40e..57bf796 100644 --- a/node/n_argument_list.go +++ b/node/n_argument_list.go @@ -1,22 +1,23 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // ArgumentList node type ArgumentList struct { - Meta meta.Collection - Position *position.Position - Arguments []Node + FreeFloating freefloating.Collection + Position *position.Position + Arguments []Node } // NewArgumentList node constructor func NewArgumentList(Arguments []Node) *ArgumentList { return &ArgumentList{ - Arguments: Arguments, + FreeFloating: nil, + Arguments: Arguments, } } @@ -30,8 +31,8 @@ func (n *ArgumentList) GetPosition() *position.Position { return n.Position } -func (n *ArgumentList) GetMeta() *meta.Collection { - return &n.Meta +func (n *ArgumentList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/n_identifier.go b/node/n_identifier.go index 5d35674..48b8d8c 100644 --- a/node/n_identifier.go +++ b/node/n_identifier.go @@ -1,22 +1,23 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Identifier node type Identifier struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewIdentifier node constructor func NewIdentifier(Value string) *Identifier { return &Identifier{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *Identifier) GetPosition() *position.Position { return n.Position } -func (n *Identifier) GetMeta() *meta.Collection { - return &n.Meta +func (n *Identifier) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/n_nullable.go b/node/n_nullable.go index f62a2b5..335f949 100644 --- a/node/n_nullable.go +++ b/node/n_nullable.go @@ -1,22 +1,23 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Nullable node type Nullable struct { - Meta meta.Collection - Position *position.Position - Expr Node + FreeFloating freefloating.Collection + Position *position.Position + Expr Node } // NewNullable node constructor func NewNullable(Expression Node) *Nullable { return &Nullable{ - Expr: Expression, + FreeFloating: nil, + Expr: Expression, } } @@ -30,8 +31,8 @@ func (n *Nullable) GetPosition() *position.Position { return n.Position } -func (n *Nullable) GetMeta() *meta.Collection { - return &n.Meta +func (n *Nullable) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/n_parameter.go b/node/n_parameter.go index e1def7b..5d2477d 100644 --- a/node/n_parameter.go +++ b/node/n_parameter.go @@ -1,14 +1,14 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Parameter node type Parameter struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position ByRef bool Variadic bool @@ -20,6 +20,7 @@ type Parameter struct { // NewParameter node constructor func NewParameter(VariableType Node, Variable Node, DefaultValue Node, ByRef bool, Variadic bool) *Parameter { return &Parameter{ + FreeFloating: nil, ByRef: ByRef, Variadic: Variadic, VariableType: VariableType, @@ -38,8 +39,8 @@ func (n *Parameter) GetPosition() *position.Position { return n.Position } -func (n *Parameter) GetMeta() *meta.Collection { - return &n.Meta +func (n *Parameter) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/n_root.go b/node/n_root.go index f95d301..246f3cd 100644 --- a/node/n_root.go +++ b/node/n_root.go @@ -1,22 +1,23 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Root node type Root struct { - Meta meta.Collection - Position *position.Position - Stmts []Node + FreeFloating freefloating.Collection + Position *position.Position + Stmts []Node } // NewRoot node constructor func NewRoot(Stmts []Node) *Root { return &Root{ - Stmts: Stmts, + FreeFloating: nil, + Stmts: Stmts, } } @@ -30,8 +31,8 @@ func (n *Root) GetPosition() *position.Position { return n.Position } -func (n *Root) GetMeta() *meta.Collection { - return &n.Meta +func (n *Root) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/name/n_fully_qualified.go b/node/name/n_fully_qualified.go index 7f632c8..903275d 100644 --- a/node/name/n_fully_qualified.go +++ b/node/name/n_fully_qualified.go @@ -1,7 +1,7 @@ package name import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // FullyQualified node type FullyQualified struct { - Meta meta.Collection - Position *position.Position - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node } // NewFullyQualified node constructor func NewFullyQualified(Parts []node.Node) *FullyQualified { return &FullyQualified{ - Parts: Parts, + FreeFloating: nil, + Parts: Parts, } } @@ -31,8 +32,8 @@ func (n *FullyQualified) GetPosition() *position.Position { return n.Position } -func (n *FullyQualified) GetMeta() *meta.Collection { - return &n.Meta +func (n *FullyQualified) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/name/n_name.go b/node/name/n_name.go index 4113c3e..9e9129c 100644 --- a/node/name/n_name.go +++ b/node/name/n_name.go @@ -1,7 +1,7 @@ package name import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Name node type Name struct { - Meta meta.Collection - Position *position.Position - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node } // NewName node constructor func NewName(Parts []node.Node) *Name { return &Name{ - Parts: Parts, + FreeFloating: nil, + Parts: Parts, } } @@ -31,8 +32,8 @@ func (n *Name) GetPosition() *position.Position { return n.Position } -func (n *Name) GetMeta() *meta.Collection { - return &n.Meta +func (n *Name) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/name/n_name_part.go b/node/name/n_name_part.go index 9c371f2..4d6bc3b 100644 --- a/node/name/n_name_part.go +++ b/node/name/n_name_part.go @@ -1,22 +1,23 @@ package name import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // NamePart node type NamePart struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewNamePart node constructor func NewNamePart(Value string) *NamePart { return &NamePart{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *NamePart) GetPosition() *position.Position { return n.Position } -func (n *NamePart) GetMeta() *meta.Collection { - return &n.Meta +func (n *NamePart) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/name/n_relative.go b/node/name/n_relative.go index 561dfb1..c1b3368 100644 --- a/node/name/n_relative.go +++ b/node/name/n_relative.go @@ -1,7 +1,7 @@ package name import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Relative node type Relative struct { - Meta meta.Collection - Position *position.Position - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node } // NewRelative node constructor func NewRelative(Parts []node.Node) *Relative { return &Relative{ - Parts: Parts, + FreeFloating: nil, + Parts: Parts, } } @@ -31,8 +32,8 @@ func (n *Relative) GetPosition() *position.Position { return n.Position } -func (n *Relative) GetMeta() *meta.Collection { - return &n.Meta +func (n *Relative) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/name/t_freefloating_test.go b/node/name/t_freefloating_test.go new file mode 100644 index 0000000..d6483e6 --- /dev/null +++ b/node/name/t_freefloating_test.go @@ -0,0 +1,48 @@ +package name_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/name" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &name.FullyQualified{ + FreeFloating: expected, + }, + &name.NamePart{ + FreeFloating: expected, + }, + &name.Name{ + FreeFloating: expected, + }, + &name.Relative{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/name/t_meta_test.go b/node/name/t_meta_test.go deleted file mode 100644 index 3f4cc7a..0000000 --- a/node/name/t_meta_test.go +++ /dev/null @@ -1,38 +0,0 @@ -package name_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/name" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &name.FullyQualified{}, - &name.NamePart{}, - &name.Name{}, - &name.Relative{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/name/t_name_test.go b/node/name/t_name_test.go index b2fdc2c..9ff3d08 100644 --- a/node/name/t_name_test.go +++ b/node/name/t_name_test.go @@ -2,33 +2,20 @@ package name_test import ( "bytes" - "reflect" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" - "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - - } -} - func TestName(t *testing.T) { src := ` foo();` @@ -89,12 +76,12 @@ func TestName(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFullyQualified(t *testing.T) { @@ -157,12 +144,12 @@ func TestFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestRelative(t *testing.T) { @@ -225,12 +212,12 @@ func TestRelative(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNamePartsGetter(t *testing.T) { @@ -243,7 +230,7 @@ func TestNamePartsGetter(t *testing.T) { relativeName := &name.Relative{Parts: expected} fullyQualifiedName := &name.FullyQualified{Parts: expected} - assertEqual(t, expected, plainName.GetParts()) - assertEqual(t, expected, relativeName.GetParts()) - assertEqual(t, expected, fullyQualifiedName.GetParts()) + assert.DeepEqual(t, expected, plainName.GetParts()) + assert.DeepEqual(t, expected, relativeName.GetParts()) + assert.DeepEqual(t, expected, fullyQualifiedName.GetParts()) } diff --git a/node/name/t_position_test.go b/node/name/t_position_test.go index c5422e8..270c871 100644 --- a/node/name/t_position_test.go +++ b/node/name/t_position_test.go @@ -3,6 +3,8 @@ package name_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/name/t_visitor_test.go b/node/name/t_visitor_test.go index dad1d33..0b9ebae 100644 --- a/node/name/t_visitor_test.go +++ b/node/name/t_visitor_test.go @@ -1,14 +1,13 @@ package name_test import ( - "reflect" "testing" + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/walker" - - "github.com/kylelemons/godebug/pretty" - "github.com/z7zmey/php-parser/node" ) var nameNodesTests = []struct { @@ -56,31 +55,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestNameVisitorDisableChildren(t *testing.T) { for _, tt := range nameNodesTests { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestNameVisitor(t *testing.T) { for _, tt := range nameNodesTests { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -91,9 +84,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/node.go b/node/node.go index 390374f..ac01b73 100644 --- a/node/node.go +++ b/node/node.go @@ -1,7 +1,7 @@ package node import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) @@ -12,5 +12,5 @@ type Node interface { Attributes() map[string]interface{} // Attributes returns node attributes as map SetPosition(p *position.Position) GetPosition() *position.Position - GetMeta() *meta.Collection + GetFreeFloating() *freefloating.Collection } diff --git a/node/scalar/node_dnumber.go b/node/scalar/node_dnumber.go index 1368e7f..fe703b7 100644 --- a/node/scalar/node_dnumber.go +++ b/node/scalar/node_dnumber.go @@ -1,22 +1,23 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Dnumber node type Dnumber struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewDnumber node constructor func NewDnumber(Value string) *Dnumber { return &Dnumber{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *Dnumber) GetPosition() *position.Position { return n.Position } -func (n *Dnumber) GetMeta() *meta.Collection { - return &n.Meta +func (n *Dnumber) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_encapsed.go b/node/scalar/node_encapsed.go index 44c61a1..71fc3b4 100644 --- a/node/scalar/node_encapsed.go +++ b/node/scalar/node_encapsed.go @@ -1,7 +1,7 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Encapsed node type Encapsed struct { - Meta meta.Collection - Position *position.Position - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node } // NewEncapsed node constructor func NewEncapsed(Parts []node.Node) *Encapsed { return &Encapsed{ - Parts: Parts, + FreeFloating: nil, + Parts: Parts, } } @@ -31,8 +32,8 @@ func (n *Encapsed) GetPosition() *position.Position { return n.Position } -func (n *Encapsed) GetMeta() *meta.Collection { - return &n.Meta +func (n *Encapsed) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_encapsed_string_part.go b/node/scalar/node_encapsed_string_part.go index 1b30c95..2c49898 100644 --- a/node/scalar/node_encapsed_string_part.go +++ b/node/scalar/node_encapsed_string_part.go @@ -1,22 +1,23 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // EncapsedStringPart node type EncapsedStringPart struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewEncapsedStringPart node constructor func NewEncapsedStringPart(Value string) *EncapsedStringPart { return &EncapsedStringPart{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *EncapsedStringPart) GetPosition() *position.Position { return n.Position } -func (n *EncapsedStringPart) GetMeta() *meta.Collection { - return &n.Meta +func (n *EncapsedStringPart) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_heredoc.go b/node/scalar/node_heredoc.go index 205d53d..b1590a4 100644 --- a/node/scalar/node_heredoc.go +++ b/node/scalar/node_heredoc.go @@ -1,7 +1,7 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Heredoc node type Heredoc struct { - Meta meta.Collection - Position *position.Position - Label string - Parts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Label string + Parts []node.Node } // NewHeredoc node constructor func NewHeredoc(Label string, Parts []node.Node) *Heredoc { return &Heredoc{ - Label: Label, - Parts: Parts, + FreeFloating: nil, + Label: Label, + Parts: Parts, } } @@ -33,8 +34,8 @@ func (n *Heredoc) GetPosition() *position.Position { return n.Position } -func (n *Heredoc) GetMeta() *meta.Collection { - return &n.Meta +func (n *Heredoc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_lnumber.go b/node/scalar/node_lnumber.go index 9d82183..39be44a 100644 --- a/node/scalar/node_lnumber.go +++ b/node/scalar/node_lnumber.go @@ -1,22 +1,23 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Lnumber node type Lnumber struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewLnumber node constructor func NewLnumber(Value string) *Lnumber { return &Lnumber{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *Lnumber) GetPosition() *position.Position { return n.Position } -func (n *Lnumber) GetMeta() *meta.Collection { - return &n.Meta +func (n *Lnumber) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_magic_constant.go b/node/scalar/node_magic_constant.go index a8f3f94..0bb842a 100644 --- a/node/scalar/node_magic_constant.go +++ b/node/scalar/node_magic_constant.go @@ -1,22 +1,23 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // MagicConstant node type MagicConstant struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewMagicConstant node constructor func NewMagicConstant(Value string) *MagicConstant { return &MagicConstant{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *MagicConstant) GetPosition() *position.Position { return n.Position } -func (n *MagicConstant) GetMeta() *meta.Collection { - return &n.Meta +func (n *MagicConstant) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/node_string.go b/node/scalar/node_string.go index 6c42b73..f0de0c7 100644 --- a/node/scalar/node_string.go +++ b/node/scalar/node_string.go @@ -1,22 +1,23 @@ package scalar import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // String node type String struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewString node constructor func NewString(Value string) *String { return &String{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *String) GetPosition() *position.Position { return n.Position } -func (n *String) GetMeta() *meta.Collection { - return &n.Meta +func (n *String) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/scalar/t_encapsed_test.go b/node/scalar/t_encapsed_test.go index c77cd8d..2b96e72 100644 --- a/node/scalar/t_encapsed_test.go +++ b/node/scalar/t_encapsed_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -75,12 +77,12 @@ func TestSimpleVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSimpleVarOneChar(t *testing.T) { @@ -144,12 +146,12 @@ func TestSimpleVarOneChar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSimpleVarEndsEcapsed(t *testing.T) { @@ -222,12 +224,12 @@ func TestSimpleVarEndsEcapsed(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStringVarCurveOpen(t *testing.T) { @@ -308,12 +310,12 @@ func TestStringVarCurveOpen(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSimpleVarPropertyFetch(t *testing.T) { @@ -403,12 +405,12 @@ func TestSimpleVarPropertyFetch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDollarOpenCurlyBraces(t *testing.T) { @@ -472,12 +474,12 @@ func TestDollarOpenCurlyBraces(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDollarOpenCurlyBracesDimNumber(t *testing.T) { @@ -558,12 +560,12 @@ func TestDollarOpenCurlyBracesDimNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestCurlyOpenMethodCall(t *testing.T) { @@ -652,10 +654,10 @@ func TestCurlyOpenMethodCall(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/scalar/t_freefloating_test.go b/node/scalar/t_freefloating_test.go new file mode 100644 index 0000000..c30e2ff --- /dev/null +++ b/node/scalar/t_freefloating_test.go @@ -0,0 +1,57 @@ +package scalar_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/scalar" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &scalar.Dnumber{ + FreeFloating: expected, + }, + &scalar.EncapsedStringPart{ + FreeFloating: expected, + }, + &scalar.Encapsed{ + FreeFloating: expected, + }, + &scalar.Heredoc{ + FreeFloating: expected, + }, + &scalar.Lnumber{ + FreeFloating: expected, + }, + &scalar.MagicConstant{ + FreeFloating: expected, + }, + &scalar.String{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/scalar/t_heredoc_test.go b/node/scalar/t_heredoc_test.go index 8a56a8d..45acd48 100644 --- a/node/scalar/t_heredoc_test.go +++ b/node/scalar/t_heredoc_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -79,12 +81,12 @@ LBL; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSimpleHeredocLabel(t *testing.T) { @@ -152,12 +154,12 @@ LBL; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSimpleNowdocLabel(t *testing.T) { @@ -208,12 +210,12 @@ LBL; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestEmptyHeredoc(t *testing.T) { @@ -252,12 +254,12 @@ CAD; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestHeredocScalarString(t *testing.T) { @@ -308,10 +310,10 @@ CAD; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/scalar/t_magic_constant_test.go b/node/scalar/t_magic_constant_test.go index e450dc8..4c57efc 100644 --- a/node/scalar/t_magic_constant_test.go +++ b/node/scalar/t_magic_constant_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" @@ -47,10 +49,10 @@ func TestMagicConstant(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/scalar/t_meta_test.go b/node/scalar/t_meta_test.go deleted file mode 100644 index 4040547..0000000 --- a/node/scalar/t_meta_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package scalar_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/scalar" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &scalar.Dnumber{}, - &scalar.EncapsedStringPart{}, - &scalar.Encapsed{}, - &scalar.Heredoc{}, - &scalar.Lnumber{}, - &scalar.MagicConstant{}, - &scalar.String{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/scalar/t_numbers_test.go b/node/scalar/t_numbers_test.go index 7674ba5..153ef9d 100644 --- a/node/scalar/t_numbers_test.go +++ b/node/scalar/t_numbers_test.go @@ -2,10 +2,10 @@ package scalar_test import ( "bytes" - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" @@ -14,19 +14,6 @@ import ( "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - - } -} - func TestLNumber(t *testing.T) { src := ` 1234567890123456789;` @@ -61,12 +48,12 @@ func TestLNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDNumber(t *testing.T) { @@ -103,12 +90,12 @@ func TestDNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFloat(t *testing.T) { @@ -145,12 +132,12 @@ func TestFloat(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBinaryLNumber(t *testing.T) { @@ -187,12 +174,12 @@ func TestBinaryLNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBinaryDNumber(t *testing.T) { @@ -229,12 +216,12 @@ func TestBinaryDNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestHLNumber(t *testing.T) { @@ -271,12 +258,12 @@ func TestHLNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestHDNumber(t *testing.T) { @@ -313,10 +300,10 @@ func TestHDNumber(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/scalar/t_position_test.go b/node/scalar/t_position_test.go index 47545b8..daabc58 100644 --- a/node/scalar/t_position_test.go +++ b/node/scalar/t_position_test.go @@ -3,6 +3,8 @@ package scalar_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/scalar/t_string_test.go b/node/scalar/t_string_test.go index 338944d..f40e854 100644 --- a/node/scalar/t_string_test.go +++ b/node/scalar/t_string_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" @@ -46,12 +48,12 @@ func TestDoubleQuotedScalarString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDoubleQuotedScalarStringWithEscapedVar(t *testing.T) { @@ -88,12 +90,12 @@ func TestDoubleQuotedScalarStringWithEscapedVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMultilineDoubleQuotedScalarString(t *testing.T) { @@ -132,12 +134,12 @@ func TestMultilineDoubleQuotedScalarString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSingleQuotedScalarString(t *testing.T) { @@ -174,12 +176,12 @@ func TestSingleQuotedScalarString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMultilineSingleQuotedScalarString(t *testing.T) { @@ -218,10 +220,10 @@ func TestMultilineSingleQuotedScalarString(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/n_alt_else.go b/node/stmt/n_alt_else.go index e9afe4a..ffc393b 100644 --- a/node/stmt/n_alt_else.go +++ b/node/stmt/n_alt_else.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // AltElse node type AltElse struct { - Meta meta.Collection - Position *position.Position - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmt node.Node } // NewAltElse node constructor func NewAltElse(Stmt node.Node) *AltElse { return &AltElse{ - Stmt: Stmt, + FreeFloating: nil, + Stmt: Stmt, } } @@ -31,8 +32,8 @@ func (n *AltElse) GetPosition() *position.Position { return n.Position } -func (n *AltElse) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltElse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_else_if.go b/node/stmt/n_alt_else_if.go index b5b262f..4a8768d 100644 --- a/node/stmt/n_alt_else_if.go +++ b/node/stmt/n_alt_else_if.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // AltElseIf node type AltElseIf struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node } // NewAltElseIf node constructor func NewAltElseIf(Cond node.Node, Stmt node.Node) *AltElseIf { return &AltElseIf{ - Cond: Cond, - Stmt: Stmt, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, } } @@ -33,8 +34,8 @@ func (n *AltElseIf) GetPosition() *position.Position { return n.Position } -func (n *AltElseIf) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltElseIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_for.go b/node/stmt/n_alt_for.go index 55e7468..796af88 100644 --- a/node/stmt/n_alt_for.go +++ b/node/stmt/n_alt_for.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // AltFor node type AltFor struct { - Meta meta.Collection - Position *position.Position - Init []node.Node - Cond []node.Node - Loop []node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Init []node.Node + Cond []node.Node + Loop []node.Node + Stmt node.Node } // NewAltFor node constructor func NewAltFor(Init []node.Node, Cond []node.Node, Loop []node.Node, Stmt node.Node) *AltFor { return &AltFor{ - Init: Init, - Cond: Cond, - Loop: Loop, - Stmt: Stmt, + FreeFloating: nil, + Init: Init, + Cond: Cond, + Loop: Loop, + Stmt: Stmt, } } @@ -37,8 +38,8 @@ func (n *AltFor) GetPosition() *position.Position { return n.Position } -func (n *AltFor) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltFor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_foreach.go b/node/stmt/n_alt_foreach.go index fcc5193..3a1b5c1 100644 --- a/node/stmt/n_alt_foreach.go +++ b/node/stmt/n_alt_foreach.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // AltForeach node type AltForeach struct { - Meta meta.Collection - Position *position.Position - Expr node.Node - Key node.Node - Variable node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node + Key node.Node + Variable node.Node + Stmt node.Node } // NewAltForeach node constructor func NewAltForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node) *AltForeach { return &AltForeach{ - Expr: Expr, - Key: Key, - Variable: Variable, - Stmt: Stmt, + FreeFloating: nil, + Expr: Expr, + Key: Key, + Variable: Variable, + Stmt: Stmt, } } @@ -37,8 +38,8 @@ func (n *AltForeach) GetPosition() *position.Position { return n.Position } -func (n *AltForeach) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltForeach) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_if.go b/node/stmt/n_alt_if.go index 4bc17f5..f28773b 100644 --- a/node/stmt/n_alt_if.go +++ b/node/stmt/n_alt_if.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // AltIf node type AltIf struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node - ElseIf []node.Node - Else node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node + ElseIf []node.Node + Else node.Node } // NewAltIf node constructor func NewAltIf(Cond node.Node, Stmt node.Node, ElseIf []node.Node, Else node.Node) *AltIf { return &AltIf{ - Cond: Cond, - Stmt: Stmt, - ElseIf: ElseIf, - Else: Else, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + ElseIf: ElseIf, + Else: Else, } } @@ -37,8 +38,8 @@ func (n *AltIf) GetPosition() *position.Position { return n.Position } -func (n *AltIf) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_switch.go b/node/stmt/n_alt_switch.go index 028f522..e51d6f0 100644 --- a/node/stmt/n_alt_switch.go +++ b/node/stmt/n_alt_switch.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // AltSwitch node type AltSwitch struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - CaseList *CaseList + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + CaseList *CaseList } // NewAltSwitch node constructor func NewAltSwitch(Cond node.Node, CaseList *CaseList) *AltSwitch { return &AltSwitch{ - Cond: Cond, - CaseList: CaseList, + FreeFloating: nil, + Cond: Cond, + CaseList: CaseList, } } @@ -33,8 +34,8 @@ func (n *AltSwitch) GetPosition() *position.Position { return n.Position } -func (n *AltSwitch) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltSwitch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_alt_while.go b/node/stmt/n_alt_while.go index 1727fd9..b002971 100644 --- a/node/stmt/n_alt_while.go +++ b/node/stmt/n_alt_while.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // AltWhile node type AltWhile struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node } // NewAltWhile node constructor func NewAltWhile(Cond node.Node, Stmt node.Node) *AltWhile { return &AltWhile{ - Cond: Cond, - Stmt: Stmt, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, } } @@ -33,8 +34,8 @@ func (n *AltWhile) GetPosition() *position.Position { return n.Position } -func (n *AltWhile) GetMeta() *meta.Collection { - return &n.Meta +func (n *AltWhile) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_break.go b/node/stmt/n_break.go index b2937c5..b8ede9c 100644 --- a/node/stmt/n_break.go +++ b/node/stmt/n_break.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Break node type Break struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewBreak node constructor func NewBreak(Expr node.Node) *Break { return &Break{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Break) GetPosition() *position.Position { return n.Position } -func (n *Break) GetMeta() *meta.Collection { - return &n.Meta +func (n *Break) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_case.go b/node/stmt/n_case.go index 9c186a0..6b89357 100644 --- a/node/stmt/n_case.go +++ b/node/stmt/n_case.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Case node type Case struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmts []node.Node } // NewCase node constructor func NewCase(Cond node.Node, Stmts []node.Node) *Case { return &Case{ - Cond: Cond, - Stmts: Stmts, + FreeFloating: nil, + Cond: Cond, + Stmts: Stmts, } } @@ -33,8 +34,8 @@ func (n *Case) GetPosition() *position.Position { return n.Position } -func (n *Case) GetMeta() *meta.Collection { - return &n.Meta +func (n *Case) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_case_list.go b/node/stmt/n_case_list.go index 7b86545..377bb87 100644 --- a/node/stmt/n_case_list.go +++ b/node/stmt/n_case_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // CaseList node type CaseList struct { - Meta meta.Collection - Position *position.Position - Cases []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cases []node.Node } // NewCaseList node constructor func NewCaseList(Cases []node.Node) *CaseList { return &CaseList{ - Cases: Cases, + FreeFloating: nil, + Cases: Cases, } } @@ -31,8 +32,8 @@ func (n *CaseList) GetPosition() *position.Position { return n.Position } -func (n *CaseList) GetMeta() *meta.Collection { - return &n.Meta +func (n *CaseList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_catch.go b/node/stmt/n_catch.go index 6e57e07..7a410c0 100644 --- a/node/stmt/n_catch.go +++ b/node/stmt/n_catch.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // Catch node type Catch struct { - Meta meta.Collection - Position *position.Position - Types []node.Node - Variable node.Node - Stmts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Types []node.Node + Variable node.Node + Stmts []node.Node } // NewCatch node constructor func NewCatch(Types []node.Node, Variable node.Node, Stmts []node.Node) *Catch { return &Catch{ - Types: Types, - Variable: Variable, - Stmts: Stmts, + FreeFloating: nil, + Types: Types, + Variable: Variable, + Stmts: Stmts, } } @@ -35,8 +36,8 @@ func (n *Catch) GetPosition() *position.Position { return n.Position } -func (n *Catch) GetMeta() *meta.Collection { - return &n.Meta +func (n *Catch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_class.go b/node/stmt/n_class.go index 0d3be18..65e0518 100644 --- a/node/stmt/n_class.go +++ b/node/stmt/n_class.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Class node type Class struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position PhpDocComment string ClassName node.Node @@ -23,6 +23,7 @@ type Class struct { // NewClass node constructor func NewClass(ClassName node.Node, Modifiers []node.Node, ArgumentList *node.ArgumentList, Extends *ClassExtends, Implements *ClassImplements, Stmts []node.Node, PhpDocComment string) *Class { return &Class{ + FreeFloating: nil, PhpDocComment: PhpDocComment, ClassName: ClassName, Modifiers: Modifiers, @@ -43,8 +44,8 @@ func (n *Class) GetPosition() *position.Position { return n.Position } -func (n *Class) GetMeta() *meta.Collection { - return &n.Meta +func (n *Class) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_class_const_list.go b/node/stmt/n_class_const_list.go index 13215dc..2bd5e83 100644 --- a/node/stmt/n_class_const_list.go +++ b/node/stmt/n_class_const_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ClassConstList node type ClassConstList struct { - Meta meta.Collection - Position *position.Position - Modifiers []node.Node - Consts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Modifiers []node.Node + Consts []node.Node } // NewClassConstList node constructor func NewClassConstList(Modifiers []node.Node, Consts []node.Node) *ClassConstList { return &ClassConstList{ - Modifiers: Modifiers, - Consts: Consts, + FreeFloating: nil, + Modifiers: Modifiers, + Consts: Consts, } } @@ -33,8 +34,8 @@ func (n *ClassConstList) GetPosition() *position.Position { return n.Position } -func (n *ClassConstList) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClassConstList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_class_extends.go b/node/stmt/n_class_extends.go index 58400fd..e0860c7 100644 --- a/node/stmt/n_class_extends.go +++ b/node/stmt/n_class_extends.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ClassExtends node type ClassExtends struct { - Meta meta.Collection - Position *position.Position - ClassName node.Node + FreeFloating freefloating.Collection + Position *position.Position + ClassName node.Node } // NewClassExtends node constructor func NewClassExtends(className node.Node) *ClassExtends { return &ClassExtends{ - ClassName: className, + FreeFloating: nil, + ClassName: className, } } @@ -31,8 +32,8 @@ func (n *ClassExtends) GetPosition() *position.Position { return n.Position } -func (n *ClassExtends) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClassExtends) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_class_implements.go b/node/stmt/n_class_implements.go index 0251cf0..7dc60e9 100644 --- a/node/stmt/n_class_implements.go +++ b/node/stmt/n_class_implements.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // ClassImplements node type ClassImplements struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position InterfaceNames []node.Node } @@ -17,6 +17,7 @@ type ClassImplements struct { // NewClassImplements node constructor func NewClassImplements(interfaceNames []node.Node) *ClassImplements { return &ClassImplements{ + FreeFloating: nil, InterfaceNames: interfaceNames, } } @@ -31,8 +32,8 @@ func (n *ClassImplements) GetPosition() *position.Position { return n.Position } -func (n *ClassImplements) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClassImplements) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_class_method.go b/node/stmt/n_class_method.go index 10c25d9..b887529 100644 --- a/node/stmt/n_class_method.go +++ b/node/stmt/n_class_method.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // ClassMethod node type ClassMethod struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position ReturnsRef bool PhpDocComment string @@ -23,6 +23,7 @@ type ClassMethod struct { // NewClassMethod node constructor func NewClassMethod(MethodName node.Node, Modifiers []node.Node, ReturnsRef bool, Params []node.Node, ReturnType node.Node, Stmt node.Node, PhpDocComment string) *ClassMethod { return &ClassMethod{ + FreeFloating: nil, ReturnsRef: ReturnsRef, PhpDocComment: PhpDocComment, MethodName: MethodName, @@ -43,8 +44,8 @@ func (n *ClassMethod) GetPosition() *position.Position { return n.Position } -func (n *ClassMethod) GetMeta() *meta.Collection { - return &n.Meta +func (n *ClassMethod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_const_list.go b/node/stmt/n_const_list.go index 69282bd..ec30c43 100644 --- a/node/stmt/n_const_list.go +++ b/node/stmt/n_const_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // ConstList node type ConstList struct { - Meta meta.Collection - Position *position.Position - Consts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Consts []node.Node } // NewConstList node constructor func NewConstList(Consts []node.Node) *ConstList { return &ConstList{ - Consts: Consts, + FreeFloating: nil, + Consts: Consts, } } @@ -31,8 +32,8 @@ func (n *ConstList) GetPosition() *position.Position { return n.Position } -func (n *ConstList) GetMeta() *meta.Collection { - return &n.Meta +func (n *ConstList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_constant.go b/node/stmt/n_constant.go index aa4f49a..5be38cc 100644 --- a/node/stmt/n_constant.go +++ b/node/stmt/n_constant.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Constant node type Constant struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position PhpDocComment string ConstantName node.Node @@ -19,6 +19,7 @@ type Constant struct { // NewConstant node constructor func NewConstant(ConstantName node.Node, Expr node.Node, PhpDocComment string) *Constant { return &Constant{ + FreeFloating: nil, PhpDocComment: PhpDocComment, ConstantName: ConstantName, Expr: Expr, @@ -35,8 +36,8 @@ func (n *Constant) GetPosition() *position.Position { return n.Position } -func (n *Constant) GetMeta() *meta.Collection { - return &n.Meta +func (n *Constant) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_continue.go b/node/stmt/n_continue.go index 3db197f..c997b41 100644 --- a/node/stmt/n_continue.go +++ b/node/stmt/n_continue.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Continue node type Continue struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewContinue node constructor func NewContinue(Expr node.Node) *Continue { return &Continue{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Continue) GetPosition() *position.Position { return n.Position } -func (n *Continue) GetMeta() *meta.Collection { - return &n.Meta +func (n *Continue) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_declare.go b/node/stmt/n_declare.go index a07a84d..be46707 100644 --- a/node/stmt/n_declare.go +++ b/node/stmt/n_declare.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // Declare node type Declare struct { - Meta meta.Collection - Position *position.Position - Consts []node.Node - Stmt node.Node - Alt bool + FreeFloating freefloating.Collection + Position *position.Position + Consts []node.Node + Stmt node.Node + Alt bool } // NewDeclare node constructor func NewDeclare(Consts []node.Node, Stmt node.Node, alt bool) *Declare { return &Declare{ - Consts: Consts, - Stmt: Stmt, - Alt: alt, + FreeFloating: nil, + Consts: Consts, + Stmt: Stmt, + Alt: alt, } } @@ -35,8 +36,8 @@ func (n *Declare) GetPosition() *position.Position { return n.Position } -func (n *Declare) GetMeta() *meta.Collection { - return &n.Meta +func (n *Declare) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_default.go b/node/stmt/n_default.go index 8348b29..9434f41 100644 --- a/node/stmt/n_default.go +++ b/node/stmt/n_default.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Default node type Default struct { - Meta meta.Collection - Position *position.Position - Stmts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node } // NewDefault node constructor func NewDefault(Stmts []node.Node) *Default { return &Default{ - Stmts: Stmts, + FreeFloating: nil, + Stmts: Stmts, } } @@ -31,8 +32,8 @@ func (n *Default) GetPosition() *position.Position { return n.Position } -func (n *Default) GetMeta() *meta.Collection { - return &n.Meta +func (n *Default) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_do.go b/node/stmt/n_do.go index 9a946ee..0b605cb 100644 --- a/node/stmt/n_do.go +++ b/node/stmt/n_do.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Do node type Do struct { - Meta meta.Collection - Position *position.Position - Stmt node.Node - Cond node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmt node.Node + Cond node.Node } // NewDo node constructor func NewDo(Stmt node.Node, Cond node.Node) *Do { return &Do{ - Stmt: Stmt, - Cond: Cond, + FreeFloating: nil, + Stmt: Stmt, + Cond: Cond, } } @@ -33,8 +34,8 @@ func (n *Do) GetPosition() *position.Position { return n.Position } -func (n *Do) GetMeta() *meta.Collection { - return &n.Meta +func (n *Do) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_echo.go b/node/stmt/n_echo.go index 89bdb26..9e353cd 100644 --- a/node/stmt/n_echo.go +++ b/node/stmt/n_echo.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Echo node type Echo struct { - Meta meta.Collection - Position *position.Position - Exprs []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Exprs []node.Node } // NewEcho node constructor func NewEcho(Exprs []node.Node) *Echo { return &Echo{ - Exprs: Exprs, + FreeFloating: nil, + Exprs: Exprs, } } @@ -31,8 +32,8 @@ func (n *Echo) GetPosition() *position.Position { return n.Position } -func (n *Echo) GetMeta() *meta.Collection { - return &n.Meta +func (n *Echo) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_else.go b/node/stmt/n_else.go index b8135b2..c9d8e58 100644 --- a/node/stmt/n_else.go +++ b/node/stmt/n_else.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Else node type Else struct { - Meta meta.Collection - Position *position.Position - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmt node.Node } // NewElse node constructor func NewElse(Stmt node.Node) *Else { return &Else{ - Stmt: Stmt, + FreeFloating: nil, + Stmt: Stmt, } } @@ -31,8 +32,8 @@ func (n *Else) GetPosition() *position.Position { return n.Position } -func (n *Else) GetMeta() *meta.Collection { - return &n.Meta +func (n *Else) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_else_if.go b/node/stmt/n_else_if.go index 9dc3533..f4b9f9a 100644 --- a/node/stmt/n_else_if.go +++ b/node/stmt/n_else_if.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // ElseIf node type ElseIf struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node } // NewElseIf node constructor func NewElseIf(Cond node.Node, Stmt node.Node) *ElseIf { return &ElseIf{ - Cond: Cond, - Stmt: Stmt, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, } } @@ -33,8 +34,8 @@ func (n *ElseIf) GetPosition() *position.Position { return n.Position } -func (n *ElseIf) GetMeta() *meta.Collection { - return &n.Meta +func (n *ElseIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_expression.go b/node/stmt/n_expression.go index caf05ad..0f30b1f 100644 --- a/node/stmt/n_expression.go +++ b/node/stmt/n_expression.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Expression node type Expression struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewExpression node constructor func NewExpression(Expr node.Node) *Expression { return &Expression{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Expression) GetPosition() *position.Position { return n.Position } -func (n *Expression) GetMeta() *meta.Collection { - return &n.Meta +func (n *Expression) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_finally.go b/node/stmt/n_finally.go index 49a7892..a5a0053 100644 --- a/node/stmt/n_finally.go +++ b/node/stmt/n_finally.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Finally node type Finally struct { - Meta meta.Collection - Position *position.Position - Stmts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node } // NewFinally node constructor func NewFinally(Stmts []node.Node) *Finally { return &Finally{ - Stmts: Stmts, + FreeFloating: nil, + Stmts: Stmts, } } @@ -31,8 +32,8 @@ func (n *Finally) GetPosition() *position.Position { return n.Position } -func (n *Finally) GetMeta() *meta.Collection { - return &n.Meta +func (n *Finally) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_for.go b/node/stmt/n_for.go index c3d9b6a..e421124 100644 --- a/node/stmt/n_for.go +++ b/node/stmt/n_for.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // For node type For struct { - Meta meta.Collection - Position *position.Position - Init []node.Node - Cond []node.Node - Loop []node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Init []node.Node + Cond []node.Node + Loop []node.Node + Stmt node.Node } // NewFor node constructor func NewFor(Init []node.Node, Cond []node.Node, Loop []node.Node, Stmt node.Node) *For { return &For{ - Init: Init, - Cond: Cond, - Loop: Loop, - Stmt: Stmt, + FreeFloating: nil, + Init: Init, + Cond: Cond, + Loop: Loop, + Stmt: Stmt, } } @@ -37,8 +38,8 @@ func (n *For) GetPosition() *position.Position { return n.Position } -func (n *For) GetMeta() *meta.Collection { - return &n.Meta +func (n *For) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_foreach.go b/node/stmt/n_foreach.go index 1065add..387d081 100644 --- a/node/stmt/n_foreach.go +++ b/node/stmt/n_foreach.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // Foreach node type Foreach struct { - Meta meta.Collection - Position *position.Position - Expr node.Node - Key node.Node - Variable node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node + Key node.Node + Variable node.Node + Stmt node.Node } // NewForeach node constructor func NewForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node) *Foreach { return &Foreach{ - Expr: Expr, - Key: Key, - Variable: Variable, - Stmt: Stmt, + FreeFloating: nil, + Expr: Expr, + Key: Key, + Variable: Variable, + Stmt: Stmt, } } @@ -37,8 +38,8 @@ func (n *Foreach) GetPosition() *position.Position { return n.Position } -func (n *Foreach) GetMeta() *meta.Collection { - return &n.Meta +func (n *Foreach) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_function.go b/node/stmt/n_function.go index 3babf8f..3af18bb 100644 --- a/node/stmt/n_function.go +++ b/node/stmt/n_function.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Function node type Function struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position ReturnsRef bool PhpDocComment string @@ -22,6 +22,7 @@ type Function struct { // NewFunction node constructor func NewFunction(FunctionName node.Node, ReturnsRef bool, Params []node.Node, ReturnType node.Node, Stmts []node.Node, PhpDocComment string) *Function { return &Function{ + FreeFloating: nil, ReturnsRef: ReturnsRef, PhpDocComment: PhpDocComment, FunctionName: FunctionName, @@ -41,8 +42,8 @@ func (n *Function) GetPosition() *position.Position { return n.Position } -func (n *Function) GetMeta() *meta.Collection { - return &n.Meta +func (n *Function) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_global.go b/node/stmt/n_global.go index 2b298a9..975c467 100644 --- a/node/stmt/n_global.go +++ b/node/stmt/n_global.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Global node type Global struct { - Meta meta.Collection - Position *position.Position - Vars []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node } // NewGlobal node constructor func NewGlobal(Vars []node.Node) *Global { return &Global{ - Vars: Vars, + FreeFloating: nil, + Vars: Vars, } } @@ -31,8 +32,8 @@ func (n *Global) GetPosition() *position.Position { return n.Position } -func (n *Global) GetMeta() *meta.Collection { - return &n.Meta +func (n *Global) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_goto.go b/node/stmt/n_goto.go index 4cd6ba2..d83d79d 100644 --- a/node/stmt/n_goto.go +++ b/node/stmt/n_goto.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Goto node type Goto struct { - Meta meta.Collection - Position *position.Position - Label node.Node + FreeFloating freefloating.Collection + Position *position.Position + Label node.Node } // NewGoto node constructor func NewGoto(Label node.Node) *Goto { return &Goto{ - Label: Label, + FreeFloating: nil, + Label: Label, } } @@ -31,8 +32,8 @@ func (n *Goto) GetPosition() *position.Position { return n.Position } -func (n *Goto) GetMeta() *meta.Collection { - return &n.Meta +func (n *Goto) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_group_use.go b/node/stmt/n_group_use.go index 565535a..ac3ca8d 100644 --- a/node/stmt/n_group_use.go +++ b/node/stmt/n_group_use.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // GroupUse node type GroupUse struct { - Meta meta.Collection - Position *position.Position - UseType node.Node - Prefix node.Node - UseList []node.Node + FreeFloating freefloating.Collection + Position *position.Position + UseType node.Node + Prefix node.Node + UseList []node.Node } // NewGroupUse node constructor func NewGroupUse(UseType node.Node, Prefix node.Node, UseList []node.Node) *GroupUse { return &GroupUse{ - UseType: UseType, - Prefix: Prefix, - UseList: UseList, + FreeFloating: nil, + UseType: UseType, + Prefix: Prefix, + UseList: UseList, } } @@ -35,8 +36,8 @@ func (n *GroupUse) GetPosition() *position.Position { return n.Position } -func (n *GroupUse) GetMeta() *meta.Collection { - return &n.Meta +func (n *GroupUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_halt_compiler.go b/node/stmt/n_halt_compiler.go index 001b977..7638f65 100644 --- a/node/stmt/n_halt_compiler.go +++ b/node/stmt/n_halt_compiler.go @@ -1,15 +1,15 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // HaltCompiler node type HaltCompiler struct { - Meta meta.Collection - Position *position.Position + FreeFloating freefloating.Collection + Position *position.Position } // NewHaltCompiler node constructor @@ -27,8 +27,8 @@ func (n *HaltCompiler) GetPosition() *position.Position { return n.Position } -func (n *HaltCompiler) GetMeta() *meta.Collection { - return &n.Meta +func (n *HaltCompiler) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_if.go b/node/stmt/n_if.go index 67a2e38..a1a06cc 100644 --- a/node/stmt/n_if.go +++ b/node/stmt/n_if.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,21 +9,22 @@ import ( // If node type If struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node - ElseIf []node.Node - Else node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node + ElseIf []node.Node + Else node.Node } // NewIf node constructor func NewIf(Cond node.Node, Stmt node.Node, ElseIf []node.Node, Else node.Node) *If { return &If{ - Cond: Cond, - Stmt: Stmt, - ElseIf: ElseIf, - Else: Else, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + ElseIf: ElseIf, + Else: Else, } } @@ -37,8 +38,8 @@ func (n *If) GetPosition() *position.Position { return n.Position } -func (n *If) GetMeta() *meta.Collection { - return &n.Meta +func (n *If) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_inline_html.go b/node/stmt/n_inline_html.go index 3c7fd50..ae11788 100644 --- a/node/stmt/n_inline_html.go +++ b/node/stmt/n_inline_html.go @@ -1,22 +1,23 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // InlineHtml node type InlineHtml struct { - Meta meta.Collection - Position *position.Position - Value string + FreeFloating freefloating.Collection + Position *position.Position + Value string } // NewInlineHtml node constructor func NewInlineHtml(Value string) *InlineHtml { return &InlineHtml{ - Value: Value, + FreeFloating: nil, + Value: Value, } } @@ -30,8 +31,8 @@ func (n *InlineHtml) GetPosition() *position.Position { return n.Position } -func (n *InlineHtml) GetMeta() *meta.Collection { - return &n.Meta +func (n *InlineHtml) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_interface.go b/node/stmt/n_interface.go index 5064126..9909b5d 100644 --- a/node/stmt/n_interface.go +++ b/node/stmt/n_interface.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Interface node type Interface struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position PhpDocComment string InterfaceName node.Node @@ -20,6 +20,7 @@ type Interface struct { // NewInterface node constructor func NewInterface(InterfaceName node.Node, Extends *InterfaceExtends, Stmts []node.Node, PhpDocComment string) *Interface { return &Interface{ + FreeFloating: nil, PhpDocComment: PhpDocComment, InterfaceName: InterfaceName, Extends: Extends, @@ -37,8 +38,8 @@ func (n *Interface) GetPosition() *position.Position { return n.Position } -func (n *Interface) GetMeta() *meta.Collection { - return &n.Meta +func (n *Interface) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_interface_extends.go b/node/stmt/n_interface_extends.go index 849c832..d9873da 100644 --- a/node/stmt/n_interface_extends.go +++ b/node/stmt/n_interface_extends.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // InterfaceExtends node type InterfaceExtends struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position InterfaceNames []node.Node } @@ -17,6 +17,7 @@ type InterfaceExtends struct { // NewInterfaceExtends node constructor func NewInterfaceExtends(InterfaceNames []node.Node) *InterfaceExtends { return &InterfaceExtends{ + FreeFloating: nil, InterfaceNames: InterfaceNames, } } @@ -31,8 +32,8 @@ func (n *InterfaceExtends) GetPosition() *position.Position { return n.Position } -func (n *InterfaceExtends) GetMeta() *meta.Collection { - return &n.Meta +func (n *InterfaceExtends) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_label.go b/node/stmt/n_label.go index 1b27d5d..450b06d 100644 --- a/node/stmt/n_label.go +++ b/node/stmt/n_label.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Label node type Label struct { - Meta meta.Collection - Position *position.Position - LabelName node.Node + FreeFloating freefloating.Collection + Position *position.Position + LabelName node.Node } // NewLabel node constructor func NewLabel(LabelName node.Node) *Label { return &Label{ - LabelName: LabelName, + FreeFloating: nil, + LabelName: LabelName, } } @@ -31,8 +32,8 @@ func (n *Label) GetPosition() *position.Position { return n.Position } -func (n *Label) GetMeta() *meta.Collection { - return &n.Meta +func (n *Label) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_namespace.go b/node/stmt/n_namespace.go index 3d60882..6338762 100644 --- a/node/stmt/n_namespace.go +++ b/node/stmt/n_namespace.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Namespace node type Namespace struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position NamespaceName node.Node Stmts []node.Node @@ -18,6 +18,7 @@ type Namespace struct { // NewNamespace node constructor func NewNamespace(NamespaceName node.Node, Stmts []node.Node) *Namespace { return &Namespace{ + FreeFloating: nil, NamespaceName: NamespaceName, Stmts: Stmts, } @@ -33,8 +34,8 @@ func (n *Namespace) GetPosition() *position.Position { return n.Position } -func (n *Namespace) GetMeta() *meta.Collection { - return &n.Meta +func (n *Namespace) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_nop.go b/node/stmt/n_nop.go index 1f73a7e..ee994a2 100644 --- a/node/stmt/n_nop.go +++ b/node/stmt/n_nop.go @@ -1,15 +1,15 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" ) // Nop node type Nop struct { - Meta meta.Collection - Position *position.Position + FreeFloating freefloating.Collection + Position *position.Position } // NewNop node constructor @@ -27,8 +27,8 @@ func (n *Nop) GetPosition() *position.Position { return n.Position } -func (n *Nop) GetMeta() *meta.Collection { - return &n.Meta +func (n *Nop) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_property.go b/node/stmt/n_property.go index 1af560d..d1df96f 100644 --- a/node/stmt/n_property.go +++ b/node/stmt/n_property.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Property node type Property struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position PhpDocComment string Variable node.Node @@ -19,6 +19,7 @@ type Property struct { // NewProperty node constructor func NewProperty(Variable node.Node, Expr node.Node, PhpDocComment string) *Property { return &Property{ + FreeFloating: nil, PhpDocComment: PhpDocComment, Variable: Variable, Expr: Expr, @@ -35,8 +36,8 @@ func (n *Property) GetPosition() *position.Position { return n.Position } -func (n *Property) GetMeta() *meta.Collection { - return &n.Meta +func (n *Property) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_property_list.go b/node/stmt/n_property_list.go index 06b04cf..fd76373 100644 --- a/node/stmt/n_property_list.go +++ b/node/stmt/n_property_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // PropertyList node type PropertyList struct { - Meta meta.Collection - Position *position.Position - Modifiers []node.Node - Properties []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Modifiers []node.Node + Properties []node.Node } // NewPropertyList node constructor func NewPropertyList(Modifiers []node.Node, Properties []node.Node) *PropertyList { return &PropertyList{ - Modifiers: Modifiers, - Properties: Properties, + FreeFloating: nil, + Modifiers: Modifiers, + Properties: Properties, } } @@ -33,8 +34,8 @@ func (n *PropertyList) GetPosition() *position.Position { return n.Position } -func (n *PropertyList) GetMeta() *meta.Collection { - return &n.Meta +func (n *PropertyList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_return.go b/node/stmt/n_return.go index b2781c3..e8dab43 100644 --- a/node/stmt/n_return.go +++ b/node/stmt/n_return.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Return node type Return struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewReturn node constructor func NewReturn(Expr node.Node) *Return { return &Return{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Return) GetPosition() *position.Position { return n.Position } -func (n *Return) GetMeta() *meta.Collection { - return &n.Meta +func (n *Return) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_static.go b/node/stmt/n_static.go index 532aab0..ff5c2a7 100644 --- a/node/stmt/n_static.go +++ b/node/stmt/n_static.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Static node type Static struct { - Meta meta.Collection - Position *position.Position - Vars []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node } // NewStatic node constructor func NewStatic(Vars []node.Node) *Static { return &Static{ - Vars: Vars, + FreeFloating: nil, + Vars: Vars, } } @@ -31,8 +32,8 @@ func (n *Static) GetPosition() *position.Position { return n.Position } -func (n *Static) GetMeta() *meta.Collection { - return &n.Meta +func (n *Static) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_static_var.go b/node/stmt/n_static_var.go index 0e38d7a..3420c5c 100644 --- a/node/stmt/n_static_var.go +++ b/node/stmt/n_static_var.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // StaticVar node type StaticVar struct { - Meta meta.Collection - Position *position.Position - Variable node.Node - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expr node.Node } // NewStaticVar node constructor func NewStaticVar(Variable node.Node, Expr node.Node) *StaticVar { return &StaticVar{ - Variable: Variable, - Expr: Expr, + FreeFloating: nil, + Variable: Variable, + Expr: Expr, } } @@ -33,8 +34,8 @@ func (n *StaticVar) GetPosition() *position.Position { return n.Position } -func (n *StaticVar) GetMeta() *meta.Collection { - return &n.Meta +func (n *StaticVar) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_stmt_list.go b/node/stmt/n_stmt_list.go index 31f8371..5a89338 100644 --- a/node/stmt/n_stmt_list.go +++ b/node/stmt/n_stmt_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // StmtList node type StmtList struct { - Meta meta.Collection - Position *position.Position - Stmts []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node } // NewStmtList node constructor func NewStmtList(Stmts []node.Node) *StmtList { return &StmtList{ - Stmts: Stmts, + FreeFloating: nil, + Stmts: Stmts, } } @@ -31,8 +32,8 @@ func (n *StmtList) GetPosition() *position.Position { return n.Position } -func (n *StmtList) GetMeta() *meta.Collection { - return &n.Meta +func (n *StmtList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_switch.go b/node/stmt/n_switch.go index ce58b16..c266a4c 100644 --- a/node/stmt/n_switch.go +++ b/node/stmt/n_switch.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // Switch node type Switch struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - CaseList *CaseList + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + CaseList *CaseList } // NewSwitch node constructor func NewSwitch(Cond node.Node, CaseList *CaseList) *Switch { return &Switch{ - Cond: Cond, - CaseList: CaseList, + FreeFloating: nil, + Cond: Cond, + CaseList: CaseList, } } @@ -33,8 +34,8 @@ func (n *Switch) GetPosition() *position.Position { return n.Position } -func (n *Switch) GetMeta() *meta.Collection { - return &n.Meta +func (n *Switch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_throw.go b/node/stmt/n_throw.go index 747fff0..75e2040 100644 --- a/node/stmt/n_throw.go +++ b/node/stmt/n_throw.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Throw node type Throw struct { - Meta meta.Collection - Position *position.Position - Expr node.Node + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node } // NewThrow node constructor func NewThrow(Expr node.Node) *Throw { return &Throw{ - Expr: Expr, + FreeFloating: nil, + Expr: Expr, } } @@ -31,8 +32,8 @@ func (n *Throw) GetPosition() *position.Position { return n.Position } -func (n *Throw) GetMeta() *meta.Collection { - return &n.Meta +func (n *Throw) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait.go b/node/stmt/n_trait.go index b9c621a..0f2506a 100644 --- a/node/stmt/n_trait.go +++ b/node/stmt/n_trait.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // Trait node type Trait struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position PhpDocComment string TraitName node.Node @@ -19,6 +19,7 @@ type Trait struct { // NewTrait node constructor func NewTrait(TraitName node.Node, Stmts []node.Node, PhpDocComment string) *Trait { return &Trait{ + FreeFloating: nil, PhpDocComment: PhpDocComment, TraitName: TraitName, Stmts: Stmts, @@ -35,8 +36,8 @@ func (n *Trait) GetPosition() *position.Position { return n.Position } -func (n *Trait) GetMeta() *meta.Collection { - return &n.Meta +func (n *Trait) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait_adaptation_list.go b/node/stmt/n_trait_adaptation_list.go index 95db99a..01d0870 100644 --- a/node/stmt/n_trait_adaptation_list.go +++ b/node/stmt/n_trait_adaptation_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // TraitAdaptationList node type TraitAdaptationList struct { - Meta meta.Collection - Position *position.Position - Adaptations []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Adaptations []node.Node } // NewTraitAdaptationList node constructor func NewTraitAdaptationList(Adaptations []node.Node) *TraitAdaptationList { return &TraitAdaptationList{ - Adaptations: Adaptations, + FreeFloating: nil, + Adaptations: Adaptations, } } @@ -31,8 +32,8 @@ func (n *TraitAdaptationList) GetPosition() *position.Position { return n.Position } -func (n *TraitAdaptationList) GetMeta() *meta.Collection { - return &n.Meta +func (n *TraitAdaptationList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait_method_ref.go b/node/stmt/n_trait_method_ref.go index cb31e95..f34e54b 100644 --- a/node/stmt/n_trait_method_ref.go +++ b/node/stmt/n_trait_method_ref.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // TraitMethodRef node type TraitMethodRef struct { - Meta meta.Collection - Position *position.Position - Trait node.Node - Method node.Node + FreeFloating freefloating.Collection + Position *position.Position + Trait node.Node + Method node.Node } // NewTraitMethodRef node constructor func NewTraitMethodRef(Trait node.Node, Method node.Node) *TraitMethodRef { return &TraitMethodRef{ - Trait: Trait, - Method: Method, + FreeFloating: nil, + Trait: Trait, + Method: Method, } } @@ -33,8 +34,8 @@ func (n *TraitMethodRef) GetPosition() *position.Position { return n.Position } -func (n *TraitMethodRef) GetMeta() *meta.Collection { - return &n.Meta +func (n *TraitMethodRef) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait_use.go b/node/stmt/n_trait_use.go index 7ae9775..cc22d1c 100644 --- a/node/stmt/n_trait_use.go +++ b/node/stmt/n_trait_use.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,7 +9,7 @@ import ( // TraitUse node type TraitUse struct { - Meta meta.Collection + FreeFloating freefloating.Collection Position *position.Position Traits []node.Node TraitAdaptationList node.Node @@ -18,6 +18,7 @@ type TraitUse struct { // NewTraitUse node constructor func NewTraitUse(Traits []node.Node, InnerAdaptationList node.Node) *TraitUse { return &TraitUse{ + FreeFloating: nil, Traits: Traits, TraitAdaptationList: InnerAdaptationList, } @@ -33,8 +34,8 @@ func (n *TraitUse) GetPosition() *position.Position { return n.Position } -func (n *TraitUse) GetMeta() *meta.Collection { - return &n.Meta +func (n *TraitUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait_use_alias.go b/node/stmt/n_trait_use_alias.go index cbe2dd3..03fea7d 100644 --- a/node/stmt/n_trait_use_alias.go +++ b/node/stmt/n_trait_use_alias.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // TraitUseAlias node type TraitUseAlias struct { - Meta meta.Collection - Position *position.Position - Ref node.Node - Modifier node.Node - Alias node.Node + FreeFloating freefloating.Collection + Position *position.Position + Ref node.Node + Modifier node.Node + Alias node.Node } // NewTraitUseAlias node constructor func NewTraitUseAlias(Ref node.Node, Modifier node.Node, Alias node.Node) *TraitUseAlias { return &TraitUseAlias{ - Ref: Ref, - Modifier: Modifier, - Alias: Alias, + FreeFloating: nil, + Ref: Ref, + Modifier: Modifier, + Alias: Alias, } } @@ -35,8 +36,8 @@ func (n *TraitUseAlias) GetPosition() *position.Position { return n.Position } -func (n *TraitUseAlias) GetMeta() *meta.Collection { - return &n.Meta +func (n *TraitUseAlias) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_trait_use_precedence.go b/node/stmt/n_trait_use_precedence.go index ff6e244..0d9a6be 100644 --- a/node/stmt/n_trait_use_precedence.go +++ b/node/stmt/n_trait_use_precedence.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // TraitUsePrecedence node type TraitUsePrecedence struct { - Meta meta.Collection - Position *position.Position - Ref node.Node - Insteadof []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Ref node.Node + Insteadof []node.Node } // NewTraitUsePrecedence node constructor func NewTraitUsePrecedence(Ref node.Node, Insteadof []node.Node) *TraitUsePrecedence { return &TraitUsePrecedence{ - Ref: Ref, - Insteadof: Insteadof, + FreeFloating: nil, + Ref: Ref, + Insteadof: Insteadof, } } @@ -33,8 +34,8 @@ func (n *TraitUsePrecedence) GetPosition() *position.Position { return n.Position } -func (n *TraitUsePrecedence) GetMeta() *meta.Collection { - return &n.Meta +func (n *TraitUsePrecedence) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_try.go b/node/stmt/n_try.go index 8755892..0e12d70 100644 --- a/node/stmt/n_try.go +++ b/node/stmt/n_try.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // Try node type Try struct { - Meta meta.Collection - Position *position.Position - Stmts []node.Node - Catches []node.Node - Finally node.Node + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node + Catches []node.Node + Finally node.Node } // NewTry node constructor func NewTry(Stmts []node.Node, Catches []node.Node, Finally node.Node) *Try { return &Try{ - Stmts: Stmts, - Catches: Catches, - Finally: Finally, + FreeFloating: nil, + Stmts: Stmts, + Catches: Catches, + Finally: Finally, } } @@ -35,8 +36,8 @@ func (n *Try) GetPosition() *position.Position { return n.Position } -func (n *Try) GetMeta() *meta.Collection { - return &n.Meta +func (n *Try) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_unset.go b/node/stmt/n_unset.go index 7704dab..7925e75 100644 --- a/node/stmt/n_unset.go +++ b/node/stmt/n_unset.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,15 +9,16 @@ import ( // Unset node type Unset struct { - Meta meta.Collection - Position *position.Position - Vars []node.Node + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node } // NewUnset node constructor func NewUnset(Vars []node.Node) *Unset { return &Unset{ - Vars: Vars, + FreeFloating: nil, + Vars: Vars, } } @@ -31,8 +32,8 @@ func (n *Unset) GetPosition() *position.Position { return n.Position } -func (n *Unset) GetMeta() *meta.Collection { - return &n.Meta +func (n *Unset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_use.go b/node/stmt/n_use.go index 62d9b8e..b177470 100644 --- a/node/stmt/n_use.go +++ b/node/stmt/n_use.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,19 +9,20 @@ import ( // Use node type Use struct { - Meta meta.Collection - Position *position.Position - UseType node.Node - Use node.Node - Alias node.Node + FreeFloating freefloating.Collection + Position *position.Position + UseType node.Node + Use node.Node + Alias node.Node } // NewUse node constructor func NewUse(UseType node.Node, use node.Node, Alias node.Node) *Use { return &Use{ - UseType: UseType, - Use: use, - Alias: Alias, + FreeFloating: nil, + UseType: UseType, + Use: use, + Alias: Alias, } } @@ -35,8 +36,8 @@ func (n *Use) GetPosition() *position.Position { return n.Position } -func (n *Use) GetMeta() *meta.Collection { - return &n.Meta +func (n *Use) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_use_list.go b/node/stmt/n_use_list.go index 989173a..886ed0f 100644 --- a/node/stmt/n_use_list.go +++ b/node/stmt/n_use_list.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // UseList node type UseList struct { - Meta meta.Collection - Position *position.Position - UseType node.Node - Uses []node.Node + FreeFloating freefloating.Collection + Position *position.Position + UseType node.Node + Uses []node.Node } // NewUseList node constructor func NewUseList(UseType node.Node, Uses []node.Node) *UseList { return &UseList{ - UseType: UseType, - Uses: Uses, + FreeFloating: nil, + UseType: UseType, + Uses: Uses, } } @@ -33,8 +34,8 @@ func (n *UseList) GetPosition() *position.Position { return n.Position } -func (n *UseList) GetMeta() *meta.Collection { - return &n.Meta +func (n *UseList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/n_while.go b/node/stmt/n_while.go index 00702b8..e466f9b 100644 --- a/node/stmt/n_while.go +++ b/node/stmt/n_while.go @@ -1,7 +1,7 @@ package stmt import ( - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/walker" @@ -9,17 +9,18 @@ import ( // While node type While struct { - Meta meta.Collection - Position *position.Position - Cond node.Node - Stmt node.Node + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + Stmt node.Node } // NewWhile node constructor func NewWhile(Cond node.Node, Stmt node.Node) *While { return &While{ - Cond: Cond, - Stmt: Stmt, + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, } } @@ -33,8 +34,8 @@ func (n *While) GetPosition() *position.Position { return n.Position } -func (n *While) GetMeta() *meta.Collection { - return &n.Meta +func (n *While) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating } // Attributes returns node attributes as map diff --git a/node/stmt/t_alt_if_test.go b/node/stmt/t_alt_if_test.go index d70bd0c..06fde73 100644 --- a/node/stmt/t_alt_if_test.go +++ b/node/stmt/t_alt_if_test.go @@ -2,35 +2,18 @@ package stmt_test import ( "bytes" - "reflect" "testing" - "github.com/davecgh/go-spew/spew" + "gotest.tools/assert" - "github.com/z7zmey/php-parser/node/expr" - "github.com/z7zmey/php-parser/position" - - "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\nexpectd: %+v\nactual: %+v\n", expected, actual) - t.Log(spew.Sdump(expected, actual)) - } - - } -} - func TestAltIf(t *testing.T) { src := ` if ($a) : @@ -85,12 +68,12 @@ func TestAltIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltElseIf(t *testing.T) { @@ -184,12 +167,12 @@ func TestAltElseIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltElse(t *testing.T) { @@ -264,12 +247,12 @@ func TestAltElse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltElseElseIf(t *testing.T) { @@ -416,10 +399,10 @@ func TestAltElseElseIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_class_const_list_test.go b/node/stmt/t_class_const_list_test.go index 55db865..2b264a5 100644 --- a/node/stmt/t_class_const_list_test.go +++ b/node/stmt/t_class_const_list_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -125,7 +127,7 @@ func TestClassConstList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClassConstListWithoutModifiers(t *testing.T) { @@ -229,10 +231,10 @@ func TestClassConstListWithoutModifiers(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_class_method_test.go b/node/stmt/t_class_method_test.go index de319cd..79cd90e 100644 --- a/node/stmt/t_class_method_test.go +++ b/node/stmt/t_class_method_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -78,12 +80,12 @@ func TestSimpleClassMethod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPrivateProtectedClassMethod(t *testing.T) { @@ -210,12 +212,12 @@ func TestPrivateProtectedClassMethod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5ClassMethod(t *testing.T) { @@ -303,7 +305,7 @@ func TestPhp5ClassMethod(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7ClassMethod(t *testing.T) { @@ -410,7 +412,7 @@ func TestPhp7ClassMethod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAbstractClassMethod(t *testing.T) { @@ -508,12 +510,12 @@ func TestAbstractClassMethod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7AbstractClassMethod(t *testing.T) { @@ -621,5 +623,5 @@ func TestPhp7AbstractClassMethod(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_class_test.go b/node/stmt/t_class_test.go index f2ddaa3..cf41e16 100644 --- a/node/stmt/t_class_test.go +++ b/node/stmt/t_class_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -50,12 +52,12 @@ func TestSimpleClass(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAbstractClass(t *testing.T) { @@ -105,12 +107,12 @@ func TestAbstractClass(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClassExtends(t *testing.T) { @@ -187,12 +189,12 @@ func TestClassExtends(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClassImplement(t *testing.T) { @@ -271,12 +273,12 @@ func TestClassImplement(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestClassImplements(t *testing.T) { @@ -374,12 +376,12 @@ func TestClassImplements(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAnonimousClass(t *testing.T) { @@ -508,5 +510,5 @@ func TestAnonimousClass(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_const_list_test.go b/node/stmt/t_const_list_test.go index bd6cb0c..b23e626 100644 --- a/node/stmt/t_const_list_test.go +++ b/node/stmt/t_const_list_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -94,10 +96,10 @@ func TestConstList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_continue_test.go b/node/stmt/t_continue_test.go index a3205d9..a42e685 100644 --- a/node/stmt/t_continue_test.go +++ b/node/stmt/t_continue_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -65,12 +67,12 @@ func TestContinueEmpty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestContinueLight(t *testing.T) { @@ -134,12 +136,12 @@ func TestContinueLight(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestContinue(t *testing.T) { @@ -203,10 +205,10 @@ func TestContinue(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_declare_test.go b/node/stmt/t_declare_test.go index 4266b69..0585efd 100644 --- a/node/stmt/t_declare_test.go +++ b/node/stmt/t_declare_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -75,12 +77,12 @@ func TestDeclare(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestDeclareStmts(t *testing.T) { @@ -173,12 +175,12 @@ func TestDeclareStmts(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltDeclare(t *testing.T) { @@ -245,10 +247,10 @@ func TestAltDeclare(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_do_test.go b/node/stmt/t_do_test.go index 372b8df..ee3cccd 100644 --- a/node/stmt/t_do_test.go +++ b/node/stmt/t_do_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -56,10 +58,10 @@ func TestDo(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_echo_test.go b/node/stmt/t_echo_test.go index a560008..e4e1c28 100644 --- a/node/stmt/t_echo_test.go +++ b/node/stmt/t_echo_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -68,12 +70,12 @@ func TestSimpleEcho(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestEcho(t *testing.T) { @@ -120,10 +122,10 @@ func TestEcho(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_expression_test.go b/node/stmt/t_expression_test.go index f394c57..f449f15 100644 --- a/node/stmt/t_expression_test.go +++ b/node/stmt/t_expression_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -47,10 +49,10 @@ func TestExpression(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_for_test.go b/node/stmt/t_for_test.go index 0a341da..baa44e8 100644 --- a/node/stmt/t_for_test.go +++ b/node/stmt/t_for_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr/binary" "github.com/z7zmey/php-parser/position" @@ -176,12 +178,12 @@ func TestFor(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltFor(t *testing.T) { @@ -281,10 +283,10 @@ func TestAltFor(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_foreach_test.go b/node/stmt/t_foreach_test.go index c7b7307..ef30417 100644 --- a/node/stmt/t_foreach_test.go +++ b/node/stmt/t_foreach_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -81,12 +83,12 @@ func TestForeach(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestForeachExpr(t *testing.T) { @@ -149,12 +151,12 @@ func TestForeachExpr(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltForeach(t *testing.T) { @@ -225,12 +227,12 @@ func TestAltForeach(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestForeachWithKey(t *testing.T) { @@ -318,12 +320,12 @@ func TestForeachWithKey(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestForeachExprWithKey(t *testing.T) { @@ -403,12 +405,12 @@ func TestForeachExprWithKey(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestForeachWithRef(t *testing.T) { @@ -504,12 +506,12 @@ func TestForeachWithRef(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestForeachWithList(t *testing.T) { @@ -615,10 +617,10 @@ func TestForeachWithList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_freefloating_test.go b/node/stmt/t_freefloating_test.go new file mode 100644 index 0000000..182c5d9 --- /dev/null +++ b/node/stmt/t_freefloating_test.go @@ -0,0 +1,216 @@ +package stmt_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/stmt" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &stmt.AltElseIf{ + FreeFloating: expected, + }, + &stmt.AltElse{ + FreeFloating: expected, + }, + &stmt.AltFor{ + FreeFloating: expected, + }, + &stmt.AltForeach{ + FreeFloating: expected, + }, + &stmt.AltIf{ + FreeFloating: expected, + }, + &stmt.AltSwitch{ + FreeFloating: expected, + }, + &stmt.AltWhile{ + FreeFloating: expected, + }, + &stmt.Break{ + FreeFloating: expected, + }, + &stmt.CaseList{ + FreeFloating: expected, + }, + &stmt.Case{ + FreeFloating: expected, + }, + &stmt.Catch{ + FreeFloating: expected, + }, + &stmt.ClassConstList{ + FreeFloating: expected, + }, + &stmt.ClassExtends{ + FreeFloating: expected, + }, + &stmt.ClassImplements{ + FreeFloating: expected, + }, + &stmt.ClassMethod{ + FreeFloating: expected, + }, + &stmt.Class{ + FreeFloating: expected, + }, + &stmt.ConstList{ + FreeFloating: expected, + }, + &stmt.Constant{ + FreeFloating: expected, + }, + &stmt.Continue{ + FreeFloating: expected, + }, + &stmt.Declare{ + FreeFloating: expected, + }, + &stmt.Default{ + FreeFloating: expected, + }, + &stmt.Do{ + FreeFloating: expected, + }, + &stmt.Echo{ + FreeFloating: expected, + }, + &stmt.ElseIf{ + FreeFloating: expected, + }, + &stmt.Else{ + FreeFloating: expected, + }, + &stmt.Expression{ + FreeFloating: expected, + }, + &stmt.Finally{ + FreeFloating: expected, + }, + &stmt.For{ + FreeFloating: expected, + }, + &stmt.Foreach{ + FreeFloating: expected, + }, + &stmt.Function{ + FreeFloating: expected, + }, + &stmt.Global{ + FreeFloating: expected, + }, + &stmt.Goto{ + FreeFloating: expected, + }, + &stmt.GroupUse{ + FreeFloating: expected, + }, + &stmt.HaltCompiler{ + FreeFloating: expected, + }, + &stmt.If{ + FreeFloating: expected, + }, + &stmt.InlineHtml{ + FreeFloating: expected, + }, + &stmt.InterfaceExtends{ + FreeFloating: expected, + }, + &stmt.Interface{ + FreeFloating: expected, + }, + &stmt.Label{ + FreeFloating: expected, + }, + &stmt.Namespace{ + FreeFloating: expected, + }, + &stmt.Nop{ + FreeFloating: expected, + }, + &stmt.PropertyList{ + FreeFloating: expected, + }, + &stmt.Property{ + FreeFloating: expected, + }, + &stmt.Return{ + FreeFloating: expected, + }, + &stmt.StaticVar{ + FreeFloating: expected, + }, + &stmt.Static{ + FreeFloating: expected, + }, + &stmt.StmtList{ + FreeFloating: expected, + }, + &stmt.Switch{ + FreeFloating: expected, + }, + &stmt.Throw{ + FreeFloating: expected, + }, + &stmt.TraitAdaptationList{ + FreeFloating: expected, + }, + &stmt.TraitMethodRef{ + FreeFloating: expected, + }, + &stmt.TraitUseAlias{ + FreeFloating: expected, + }, + &stmt.TraitUsePrecedence{ + FreeFloating: expected, + }, + &stmt.TraitUse{ + FreeFloating: expected, + }, + &stmt.Trait{ + FreeFloating: expected, + }, + &stmt.Try{ + FreeFloating: expected, + }, + &stmt.Unset{ + FreeFloating: expected, + }, + &stmt.UseList{ + FreeFloating: expected, + }, + &stmt.Use{ + FreeFloating: expected, + }, + &stmt.While{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/stmt/t_function_test.go b/node/stmt/t_function_test.go index 3ff53e1..0015f46 100644 --- a/node/stmt/t_function_test.go +++ b/node/stmt/t_function_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -52,12 +54,12 @@ func TestSimpleFunction(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionReturn(t *testing.T) { @@ -106,12 +108,12 @@ func TestFunctionReturn(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionReturnVar(t *testing.T) { @@ -251,12 +253,12 @@ func TestFunctionReturnVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestRefFunction(t *testing.T) { @@ -314,12 +316,12 @@ func TestRefFunction(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestReturnTypeFunction(t *testing.T) { @@ -378,5 +380,5 @@ func TestReturnTypeFunction(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_global_test.go b/node/stmt/t_global_test.go index 62f960f..8274294 100644 --- a/node/stmt/t_global_test.go +++ b/node/stmt/t_global_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" @@ -57,12 +59,12 @@ func TestGlobal(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestGlobalVars(t *testing.T) { @@ -194,10 +196,10 @@ func TestGlobalVars(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_goto_label_test.go b/node/stmt/t_goto_label_test.go index 59323ad..53d3ed6 100644 --- a/node/stmt/t_goto_label_test.go +++ b/node/stmt/t_goto_label_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" @@ -62,10 +64,10 @@ func TestGotoLabel(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_halt_compiler_test.go b/node/stmt/t_halt_compiler_test.go index b454a4e..54f667e 100644 --- a/node/stmt/t_halt_compiler_test.go +++ b/node/stmt/t_halt_compiler_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" @@ -36,10 +38,10 @@ func TestHaltCompiler(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_if_test.go b/node/stmt/t_if_test.go index fa20638..71c4815 100644 --- a/node/stmt/t_if_test.go +++ b/node/stmt/t_if_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/position" @@ -64,12 +66,12 @@ func TestIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestElseIf(t *testing.T) { @@ -159,12 +161,12 @@ func TestElseIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestElse(t *testing.T) { @@ -235,12 +237,12 @@ func TestElse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestElseElseIf(t *testing.T) { @@ -381,12 +383,12 @@ func TestElseElseIf(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestElseIfElseIfElse(t *testing.T) { @@ -535,10 +537,10 @@ func TestElseIfElseIfElse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_inline_html_test.go b/node/stmt/t_inline_html_test.go index fad73c5..f62ff36 100644 --- a/node/stmt/t_inline_html_test.go +++ b/node/stmt/t_inline_html_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" @@ -45,10 +47,10 @@ func TestInlineHtml(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_interface_test.go b/node/stmt/t_interface_test.go index 749e99a..df770e3 100644 --- a/node/stmt/t_interface_test.go +++ b/node/stmt/t_interface_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -49,12 +51,12 @@ func TestInterface(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestInterfaceExtend(t *testing.T) { @@ -122,12 +124,12 @@ func TestInterfaceExtend(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestInterfaceExtends(t *testing.T) { @@ -214,10 +216,10 @@ func TestInterfaceExtends(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_meta_test.go b/node/stmt/t_meta_test.go deleted file mode 100644 index a0b1bbc..0000000 --- a/node/stmt/t_meta_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package stmt_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/node/stmt" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &stmt.AltElseIf{}, - &stmt.AltElse{}, - &stmt.AltFor{}, - &stmt.AltForeach{}, - &stmt.AltIf{}, - &stmt.AltSwitch{}, - &stmt.AltWhile{}, - &stmt.Break{}, - &stmt.CaseList{}, - &stmt.Case{}, - &stmt.Catch{}, - &stmt.ClassConstList{}, - &stmt.ClassExtends{}, - &stmt.ClassImplements{}, - &stmt.ClassMethod{}, - &stmt.Class{}, - &stmt.ConstList{}, - &stmt.Constant{}, - &stmt.Continue{}, - &stmt.Declare{}, - &stmt.Default{}, - &stmt.Do{}, - &stmt.Echo{}, - &stmt.ElseIf{}, - &stmt.Else{}, - &stmt.Expression{}, - &stmt.Finally{}, - &stmt.For{}, - &stmt.Foreach{}, - &stmt.Function{}, - &stmt.Global{}, - &stmt.Goto{}, - &stmt.GroupUse{}, - &stmt.HaltCompiler{}, - &stmt.If{}, - &stmt.InlineHtml{}, - &stmt.InterfaceExtends{}, - &stmt.Interface{}, - &stmt.Label{}, - &stmt.Namespace{}, - &stmt.Nop{}, - &stmt.PropertyList{}, - &stmt.Property{}, - &stmt.Return{}, - &stmt.StaticVar{}, - &stmt.Static{}, - &stmt.StmtList{}, - &stmt.Switch{}, - &stmt.Throw{}, - &stmt.TraitAdaptationList{}, - &stmt.TraitMethodRef{}, - &stmt.TraitUseAlias{}, - &stmt.TraitUsePrecedence{}, - &stmt.TraitUse{}, - &stmt.Trait{}, - &stmt.Try{}, - &stmt.Unset{}, - &stmt.UseList{}, - &stmt.Use{}, - &stmt.While{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/stmt/t_namespace_test.go b/node/stmt/t_namespace_test.go index f70b70d..81af4c7 100644 --- a/node/stmt/t_namespace_test.go +++ b/node/stmt/t_namespace_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -57,12 +59,12 @@ func TestNamespace(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestNamespaceStmts(t *testing.T) { @@ -110,12 +112,12 @@ func TestNamespaceStmts(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAnonymousNamespace(t *testing.T) { @@ -144,10 +146,10 @@ func TestAnonymousNamespace(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_position_test.go b/node/stmt/t_position_test.go index f9416ab..9f442b7 100644 --- a/node/stmt/t_position_test.go +++ b/node/stmt/t_position_test.go @@ -3,6 +3,8 @@ package stmt_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/stmt/t_property_list_test.go b/node/stmt/t_property_list_test.go index 34ab7c4..903b995 100644 --- a/node/stmt/t_property_list_test.go +++ b/node/stmt/t_property_list_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -98,12 +100,12 @@ func TestProperty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestProperties(t *testing.T) { @@ -234,12 +236,12 @@ func TestProperties(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestProperties2(t *testing.T) { @@ -370,10 +372,10 @@ func TestProperties2(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_static_var_test.go b/node/stmt/t_static_var_test.go index 7addaef..7e71368 100644 --- a/node/stmt/t_static_var_test.go +++ b/node/stmt/t_static_var_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/scalar" @@ -65,12 +67,12 @@ func TestStaticVar(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticVars(t *testing.T) { @@ -159,12 +161,12 @@ func TestStaticVars(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestStaticVars2(t *testing.T) { @@ -253,10 +255,10 @@ func TestStaticVars2(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_switch_case_default_test.go b/node/stmt/t_switch_case_default_test.go index d4c824e..993f869 100644 --- a/node/stmt/t_switch_case_default_test.go +++ b/node/stmt/t_switch_case_default_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -108,12 +110,12 @@ func TestAltSwitch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestAltSwitchSemicolon(t *testing.T) { @@ -201,12 +203,12 @@ func TestAltSwitchSemicolon(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSwitch(t *testing.T) { @@ -312,12 +314,12 @@ func TestSwitch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestSwitchSemicolon(t *testing.T) { @@ -423,10 +425,10 @@ func TestSwitchSemicolon(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_throw_test.go b/node/stmt/t_throw_test.go index 8b512aa..d5e0bd2 100644 --- a/node/stmt/t_throw_test.go +++ b/node/stmt/t_throw_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/stmt" @@ -54,10 +56,10 @@ func TestThrow(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_trait_test.go b/node/stmt/t_trait_test.go index 18ffb15..c3fefc3 100644 --- a/node/stmt/t_trait_test.go +++ b/node/stmt/t_trait_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" @@ -47,10 +49,10 @@ func TestTrait(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_trait_use_test.go b/node/stmt/t_trait_use_test.go index c3ea79b..318c661 100644 --- a/node/stmt/t_trait_use_test.go +++ b/node/stmt/t_trait_use_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -87,12 +89,12 @@ func TestTraitUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTraitsUse(t *testing.T) { @@ -188,12 +190,12 @@ func TestTraitsUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTraitsUseEmptyAdaptations(t *testing.T) { @@ -289,12 +291,12 @@ func TestTraitsUseEmptyAdaptations(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTraitsUseModifier(t *testing.T) { @@ -426,12 +428,12 @@ func TestTraitsUseModifier(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTraitsUseAliasModifier(t *testing.T) { @@ -572,12 +574,12 @@ func TestTraitsUseAliasModifier(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTraitsUseAdaptions(t *testing.T) { @@ -812,10 +814,10 @@ func TestTraitsUseAdaptions(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_try_catch_finnaly_test.go b/node/stmt/t_try_catch_finnaly_test.go index 549c584..781f7ea 100644 --- a/node/stmt/t_try_catch_finnaly_test.go +++ b/node/stmt/t_try_catch_finnaly_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -43,12 +45,12 @@ func TestTry(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTryCatch(t *testing.T) { @@ -128,12 +130,12 @@ func TestTryCatch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7TryCatch(t *testing.T) { @@ -232,7 +234,7 @@ func TestPhp7TryCatch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTryCatchCatch(t *testing.T) { @@ -359,12 +361,12 @@ func TestTryCatchCatch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTryCatchFinally(t *testing.T) { @@ -453,12 +455,12 @@ func TestTryCatchFinally(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestTryCatchCatchCatch(t *testing.T) { @@ -630,10 +632,10 @@ func TestTryCatchCatchCatch(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_unset_test.go b/node/stmt/t_unset_test.go index be2e5ce..b3c9e5b 100644 --- a/node/stmt/t_unset_test.go +++ b/node/stmt/t_unset_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/stmt" @@ -56,12 +58,12 @@ func TestUnset(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUnsetVars(t *testing.T) { @@ -125,12 +127,12 @@ func TestUnsetVars(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUnsetTrailingComma(t *testing.T) { @@ -194,5 +196,5 @@ func TestUnsetTrailingComma(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_use_test.go b/node/stmt/t_use_test.go index 01cacf2..ea4f633 100644 --- a/node/stmt/t_use_test.go +++ b/node/stmt/t_use_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" @@ -67,12 +69,12 @@ func TestSimpleUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseFullyQualified(t *testing.T) { @@ -129,12 +131,12 @@ func TestUseFullyQualified(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseFullyQualifiedAlias(t *testing.T) { @@ -200,12 +202,12 @@ func TestUseFullyQualifiedAlias(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseList(t *testing.T) { @@ -289,12 +291,12 @@ func TestUseList(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseListAlias(t *testing.T) { @@ -387,12 +389,12 @@ func TestUseListAlias(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseListFunctionType(t *testing.T) { @@ -485,12 +487,12 @@ func TestUseListFunctionType(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseListFunctionTypeAliases(t *testing.T) { @@ -601,12 +603,12 @@ func TestUseListFunctionTypeAliases(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseListConstType(t *testing.T) { @@ -699,12 +701,12 @@ func TestUseListConstType(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestUseListConstTypeAliases(t *testing.T) { @@ -815,12 +817,12 @@ func TestUseListConstTypeAliases(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestGroupUse(t *testing.T) { @@ -923,7 +925,7 @@ func TestGroupUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestGroupUseAlias(t *testing.T) { @@ -1035,7 +1037,7 @@ func TestGroupUseAlias(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestFunctionGroupUse(t *testing.T) { @@ -1147,7 +1149,7 @@ func TestFunctionGroupUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestConstGroupUse(t *testing.T) { @@ -1259,7 +1261,7 @@ func TestConstGroupUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestMixedGroupUse(t *testing.T) { @@ -1380,5 +1382,5 @@ func TestMixedGroupUse(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/stmt/t_visitor_test.go b/node/stmt/t_visitor_test.go index c7ac8bc..132c71e 100644 --- a/node/stmt/t_visitor_test.go +++ b/node/stmt/t_visitor_test.go @@ -1,15 +1,15 @@ package stmt_test import ( - "reflect" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/stmt" - "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/walker" ) @@ -27,14 +27,14 @@ var nodesToTest = []struct { Else: &stmt.Else{}, }, []string{"Cond", "Stmt", "ElseIf", "Else"}, - map[string]interface{}{}, + nil, }, { &stmt.AltElse{ Stmt: &stmt.StmtList{}, }, []string{"Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.AltElseIf{ @@ -42,14 +42,14 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Cond", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.Break{ Expr: &stmt.Expression{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.Case{ @@ -57,7 +57,7 @@ var nodesToTest = []struct { Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Cond", "Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.Catch{ @@ -66,7 +66,7 @@ var nodesToTest = []struct { Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Types", "Variable", "Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.ClassConstList{ @@ -74,7 +74,7 @@ var nodesToTest = []struct { Consts: []node.Node{&stmt.Expression{}}, }, []string{"Modifiers", "Consts"}, - map[string]interface{}{}, + nil, }, { &stmt.ClassMethod{ @@ -107,7 +107,7 @@ var nodesToTest = []struct { Consts: []node.Node{&stmt.Expression{}}, }, []string{"Consts"}, - map[string]interface{}{}, + nil, }, { &stmt.Constant{ @@ -123,7 +123,7 @@ var nodesToTest = []struct { Expr: &stmt.Expression{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.Declare{ @@ -131,14 +131,14 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Consts", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.Default{ Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.Do{ @@ -146,7 +146,7 @@ var nodesToTest = []struct { Cond: &expr.Variable{}, }, []string{"Stmt", "Cond"}, - map[string]interface{}{}, + nil, }, { &stmt.Do{ @@ -154,14 +154,14 @@ var nodesToTest = []struct { Cond: &expr.Variable{}, }, []string{"Stmt", "Cond"}, - map[string]interface{}{}, + nil, }, { &stmt.Echo{ Exprs: []node.Node{&stmt.Expression{}}, }, []string{"Exprs"}, - map[string]interface{}{}, + nil, }, { &stmt.If{ @@ -171,14 +171,14 @@ var nodesToTest = []struct { Else: &stmt.Else{}, }, []string{"Cond", "Stmt", "ElseIf", "Else"}, - map[string]interface{}{}, + nil, }, { &stmt.Else{ Stmt: &stmt.StmtList{}, }, []string{"Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.ElseIf{ @@ -186,21 +186,21 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Cond", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.Expression{ Expr: &stmt.Expression{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.Finally{ Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.For{ @@ -210,7 +210,7 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Init", "Cond", "Loop", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.AltFor{ @@ -220,7 +220,7 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Init", "Cond", "Loop", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.Foreach{ @@ -230,7 +230,7 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Expr", "Key", "Variable", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.AltForeach{ @@ -240,7 +240,7 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Expr", "Key", "Variable", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.Function{ @@ -259,14 +259,14 @@ var nodesToTest = []struct { Vars: []node.Node{&stmt.Expression{}}, }, []string{"Vars"}, - map[string]interface{}{}, + nil, }, { &stmt.Goto{ Label: &node.Identifier{}, }, []string{"Label"}, - map[string]interface{}{}, + nil, }, { &stmt.GroupUse{ @@ -275,12 +275,12 @@ var nodesToTest = []struct { UseList: []node.Node{&stmt.Expression{}}, }, []string{"UseType", "Prefix", "UseList"}, - map[string]interface{}{}, + nil, }, { &stmt.HaltCompiler{}, []string{}, - map[string]interface{}{}, + nil, }, { &stmt.InlineHtml{ @@ -304,7 +304,7 @@ var nodesToTest = []struct { LabelName: &node.Identifier{}, }, []string{"LabelName"}, - map[string]interface{}{}, + nil, }, { &stmt.Namespace{ @@ -312,12 +312,12 @@ var nodesToTest = []struct { Stmts: []node.Node{&stmt.Expression{}}, }, []string{"NamespaceName", "Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.Nop{}, []string{}, - map[string]interface{}{}, + nil, }, { &stmt.PropertyList{ @@ -325,7 +325,7 @@ var nodesToTest = []struct { Properties: []node.Node{&stmt.Expression{}}, }, []string{"Modifiers", "Properties"}, - map[string]interface{}{}, + nil, }, { &stmt.Property{ @@ -341,7 +341,7 @@ var nodesToTest = []struct { Expr: &stmt.Expression{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.StaticVar{ @@ -349,14 +349,14 @@ var nodesToTest = []struct { Expr: &stmt.Expression{}, }, []string{"Variable", "Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.Static{ Vars: []node.Node{&stmt.Expression{}}, }, []string{"Vars"}, - map[string]interface{}{}, + nil, }, { &stmt.Switch{ @@ -364,7 +364,7 @@ var nodesToTest = []struct { CaseList: &stmt.CaseList{}, }, []string{"Cond", "CaseList"}, - map[string]interface{}{}, + nil, }, { &stmt.AltSwitch{ @@ -372,14 +372,14 @@ var nodesToTest = []struct { CaseList: &stmt.CaseList{}, }, []string{"Cond", "CaseList"}, - map[string]interface{}{}, + nil, }, { &stmt.Throw{ Expr: &stmt.Expression{}, }, []string{"Expr"}, - map[string]interface{}{}, + nil, }, { &stmt.TraitMethodRef{ @@ -387,7 +387,7 @@ var nodesToTest = []struct { Method: &node.Identifier{}, }, []string{"Trait", "Method"}, - map[string]interface{}{}, + nil, }, { &stmt.TraitUseAlias{ @@ -396,7 +396,7 @@ var nodesToTest = []struct { Alias: &node.Identifier{}, }, []string{"Ref", "Modifier", "Alias"}, - map[string]interface{}{}, + nil, }, { &stmt.TraitUsePrecedence{ @@ -404,7 +404,7 @@ var nodesToTest = []struct { Insteadof: []node.Node{&node.Identifier{}}, }, []string{"Ref", "Insteadof"}, - map[string]interface{}{}, + nil, }, { &stmt.TraitUse{ @@ -412,7 +412,7 @@ var nodesToTest = []struct { TraitAdaptationList: &stmt.TraitAdaptationList{}, }, []string{"Traits", "TraitAdaptationList"}, - map[string]interface{}{}, + nil, }, { &stmt.Trait{ @@ -430,14 +430,14 @@ var nodesToTest = []struct { Finally: &stmt.Finally{}, }, []string{"Stmts", "Catches", "Finally"}, - map[string]interface{}{}, + nil, }, { &stmt.Unset{ Vars: []node.Node{&stmt.Expression{}}, }, []string{"Vars"}, - map[string]interface{}{}, + nil, }, { &stmt.UseList{ @@ -445,7 +445,7 @@ var nodesToTest = []struct { Uses: []node.Node{&stmt.Expression{}}, }, []string{"UseType", "Uses"}, - map[string]interface{}{}, + nil, }, { &stmt.Use{ @@ -454,7 +454,7 @@ var nodesToTest = []struct { Alias: &node.Identifier{}, }, []string{"UseType", "Use", "Alias"}, - map[string]interface{}{}, + nil, }, { &stmt.While{ @@ -462,7 +462,7 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Cond", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.AltWhile{ @@ -470,35 +470,35 @@ var nodesToTest = []struct { Stmt: &stmt.StmtList{}, }, []string{"Cond", "Stmt"}, - map[string]interface{}{}, + nil, }, { &stmt.StmtList{ Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Stmts"}, - map[string]interface{}{}, + nil, }, { &stmt.CaseList{ Cases: []node.Node{&stmt.Expression{}}, }, []string{"Cases"}, - map[string]interface{}{}, + nil, }, { &stmt.TraitAdaptationList{ Adaptations: []node.Node{&stmt.TraitUsePrecedence{}}, }, []string{"Adaptations"}, - map[string]interface{}{}, + nil, }, { &stmt.ClassExtends{ ClassName: &name.Name{}, }, []string{"ClassName"}, - map[string]interface{}{}, + nil, }, { &stmt.ClassImplements{ @@ -507,7 +507,7 @@ var nodesToTest = []struct { }, }, []string{"InterfaceNames"}, - map[string]interface{}{}, + nil, }, { &stmt.InterfaceExtends{ @@ -516,7 +516,7 @@ var nodesToTest = []struct { }, }, []string{"InterfaceNames"}, - map[string]interface{}{}, + nil, }, } @@ -538,31 +538,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestVisitor(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -573,9 +567,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/node/stmt/t_while_break_test.go b/node/stmt/t_while_break_test.go index 0fc12a1..a2e77c3 100644 --- a/node/stmt/t_while_break_test.go +++ b/node/stmt/t_while_break_test.go @@ -4,6 +4,8 @@ import ( "bytes" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/position" @@ -65,12 +67,12 @@ func TestBreakEmpty(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBreakLight(t *testing.T) { @@ -134,12 +136,12 @@ func TestBreakLight(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestBreak(t *testing.T) { @@ -203,10 +205,10 @@ func TestBreak(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/t_freefloating_test.go b/node/t_freefloating_test.go new file mode 100644 index 0000000..ce61336 --- /dev/null +++ b/node/t_freefloating_test.go @@ -0,0 +1,53 @@ +package node_test + +import ( + "testing" + + "gotest.tools/assert" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" +) + +var expected freefloating.Collection = freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.WhiteSpaceType, + Value: " ", + Position: nil, + }, + { + StringType: freefloating.CommentType, + Value: "//comment\n", + Position: nil, + }, + }, +} + +var nodes = []node.Node{ + &node.ArgumentList{ + FreeFloating: expected, + }, + &node.Argument{ + FreeFloating: expected, + }, + &node.Identifier{ + FreeFloating: expected, + }, + &node.Nullable{ + FreeFloating: expected, + }, + &node.Parameter{ + FreeFloating: expected, + }, + &node.Root{ + FreeFloating: expected, + }, +} + +func TestMeta(t *testing.T) { + for _, n := range nodes { + actual := *n.GetFreeFloating() + assert.DeepEqual(t, expected, actual) + } +} diff --git a/node/t_meta_test.go b/node/t_meta_test.go deleted file mode 100644 index 56e73eb..0000000 --- a/node/t_meta_test.go +++ /dev/null @@ -1,38 +0,0 @@ -package node_test - -import ( - "testing" - - "github.com/z7zmey/php-parser/meta" - - "github.com/z7zmey/php-parser/node" -) - -var nodes = []node.Node{ - &node.ArgumentList{}, - &node.Argument{}, - &node.Identifier{}, - &node.Nullable{}, - &node.Parameter{}, - &node.Root{}, -} - -func TestMeta(t *testing.T) { - expected := &meta.Collection{ - &meta.Data{ - Value: "//comment\n", - Type: meta.CommentType, - Position: nil, - }, - &meta.Data{ - Value: " ", - Type: meta.WhiteSpaceType, - Position: nil, - }, - } - for _, n := range nodes { - n.GetMeta().Push(*expected...) - actual := n.GetMeta() - assertEqual(t, expected, actual) - } -} diff --git a/node/t_node_test.go b/node/t_node_test.go index c58ff60..d010299 100644 --- a/node/t_node_test.go +++ b/node/t_node_test.go @@ -2,34 +2,21 @@ package node_test import ( "bytes" - "reflect" "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/node/expr" - "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/php7" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - - } -} - func TestIdentifier(t *testing.T) { src := ` $foo;` @@ -72,12 +59,12 @@ func TestIdentifier(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7ArgumentNode(t *testing.T) { @@ -811,7 +798,7 @@ func TestPhp7ArgumentNode(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5ArgumentNode(t *testing.T) { @@ -1453,7 +1440,7 @@ func TestPhp5ArgumentNode(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7ParameterNode(t *testing.T) { @@ -2113,7 +2100,7 @@ func TestPhp7ParameterNode(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5ParameterNode(t *testing.T) { @@ -2741,7 +2728,7 @@ func TestPhp5ParameterNode(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestCommentEndFile(t *testing.T) { @@ -2760,10 +2747,10 @@ func TestCommentEndFile(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual = php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/node/t_position_test.go b/node/t_position_test.go index 2f17790..45f0c4e 100644 --- a/node/t_position_test.go +++ b/node/t_position_test.go @@ -3,6 +3,8 @@ package node_test import ( "testing" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/position" ) @@ -11,6 +13,6 @@ func TestPosition(t *testing.T) { for _, n := range nodes { n.SetPosition(expected) actual := n.GetPosition() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } } diff --git a/node/t_visitor_test.go b/node/t_visitor_test.go index bf0b85e..fda60a8 100644 --- a/node/t_visitor_test.go +++ b/node/t_visitor_test.go @@ -1,18 +1,15 @@ package node_test import ( - "reflect" "testing" - "github.com/z7zmey/php-parser/node/stmt" + "gotest.tools/assert" - "github.com/z7zmey/php-parser/node/scalar" - "github.com/z7zmey/php-parser/walker" - - "github.com/z7zmey/php-parser/node/expr" - - "github.com/kylelemons/godebug/pretty" "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/scalar" + "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/walker" ) var nodesToTest = []struct { @@ -53,14 +50,14 @@ var nodesToTest = []struct { }, }, []string{"Arguments"}, - map[string]interface{}{}, + nil, }, { &node.Root{ Stmts: []node.Node{&stmt.Expression{}}, }, []string{"Stmts"}, - map[string]interface{}{}, + nil, }, } @@ -82,31 +79,25 @@ func (v *visitorMock) LeaveChildList(key string, w walker.Walkable) {} func TestNameVisitorDisableChildren(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{false, nil} + v := &visitorMock{false, []string{}} tt.node.Walk(v) expected := []string{} actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } func TestNameVisitor(t *testing.T) { for _, tt := range nodesToTest { - v := &visitorMock{true, nil} + v := &visitorMock{true, []string{}} tt.node.Walk(v) expected := tt.expectedVisitedKeys actual := v.visitedKeys - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } @@ -117,9 +108,6 @@ func TestNameAttributes(t *testing.T) { expected := tt.expectedAttributes actual := tt.node.Attributes() - diff := pretty.Compare(expected, actual) - if diff != "" { - t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) - } + assert.DeepEqual(t, expected, actual) } } diff --git a/php5/parser.go b/php5/parser.go index 4c67385..a45b602 100644 --- a/php5/parser.go +++ b/php5/parser.go @@ -4,8 +4,9 @@ import ( "io" "strings" + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/errors" - "github.com/z7zmey/php-parser/meta" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/parser" "github.com/z7zmey/php-parser/position" @@ -72,16 +73,6 @@ func (l *Parser) Parse() int { return yyParse(l) } -func (l *Parser) listGetFirstNodeMeta(list []node.Node) *meta.Collection { - if len(list) == 0 { - return nil - } - - node := list[0] - - return node.GetMeta() -} - // GetPath return path to file func (l *Parser) GetPath() string { return l.path @@ -114,121 +105,122 @@ func isDollar(r rune) bool { return r == '$' } -func newInheritMetaFilter() meta.Filter { - return meta.StopOnFailureFilter( - meta.AndFilter( - meta.TokenNameFilter(meta.NodeStart), - meta.OrFilter( - meta.TypeFilter(meta.CommentType, meta.WhiteSpaceType), - meta.ValueFilter("") - - if i < 0 { - SemiColonTokenMeta.AppendTo(prevNode.GetMeta()) - } else { - if metaTokenValue[0] == ';' { - prevNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[0:1], - Type: meta.TokenType, - Position: nil, - TokenName: meta.SemiColonToken, - }) - - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[1:i], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[i : i+2], - Type: meta.TokenType, - Position: nil, - TokenName: meta.NodeStart, - }) - - if len(metaTokenValue) > i+2 { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[i+2:], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - } - } else { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[:2], - Type: meta.TokenType, - Position: nil, - TokenName: meta.NodeStart, - }) - - if len(metaTokenValue) > 2 { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[2:], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - } - } + dstCollection := dst.GetFreeFloating() + if *dstCollection == nil { + *dstCollection = make(freefloating.Collection) } + + (*dstCollection)[p] = strings +} + +func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []freefloating.String { + if l.Lexer.WithMeta == false { + return []freefloating.String{} + } + + return t.GetFreeFloatingToken() +} + +func (l *Parser) addDollarToken(v node.Node) { + if l.Lexer.WithMeta == false { + return + } + + l.setFreeFloating(v, freefloating.Dollar, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: "$", + Position: &position.Position{ + StartLine: v.GetPosition().StartLine, + EndLine: v.GetPosition().StartLine, + StartPos: v.GetPosition().StartPos, + EndPos: v.GetPosition().StartPos + 1, + }, + }, + }) +} + +func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + if l.Lexer.WithMeta == false { + return + } + + semiColon := (*prevNode.GetFreeFloating())[freefloating.SemiColon] + delete((*prevNode.GetFreeFloating()), freefloating.SemiColon) + if len(semiColon) == 0 { + return + } + + p := semiColon[0].Position + if semiColon[0].Value[0] == ';' { + l.setFreeFloating(prevNode, freefloating.SemiColon, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: ";", + Position: &position.Position{ + StartLine: p.StartLine, + EndLine: p.StartLine, + StartPos: p.StartPos, + EndPos: p.StartPos + 1, + }, + }, + }) + } + + vlen := len(semiColon[0].Value) + tlen := 2 + if strings.HasSuffix(semiColon[0].Value, "?>\n") { + tlen = 3 + } + + phpCloseTag := []freefloating.String{} + if vlen-tlen > 1 { + phpCloseTag = append(phpCloseTag, freefloating.String{ + StringType: freefloating.WhiteSpaceType, + Value: semiColon[0].Value[1 : vlen-tlen], + Position: &position.Position{ + StartLine: p.StartLine, + EndLine: p.EndLine, + StartPos: p.StartPos + 1, + EndPos: p.EndPos - tlen, + }, + }) + } + + phpCloseTag = append(phpCloseTag, freefloating.String{ + StringType: freefloating.WhiteSpaceType, + Value: semiColon[0].Value[vlen-tlen:], + Position: &position.Position{ + StartLine: p.EndLine, + EndLine: p.EndLine, + StartPos: p.EndPos - tlen, + EndPos: p.EndPos, + }, + }) + + l.setFreeFloating(htmlNode, freefloating.Start, append(phpCloseTag, (*htmlNode.GetFreeFloating())[freefloating.Start]...)) } func (p *Parser) returnTokenToPool(yyDollar []yySymType, yyVAL *yySymType) { diff --git a/php5/php5.go b/php5/php5.go index 5728047..e27c885 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -8,7 +8,7 @@ import ( "strconv" "strings" - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr/assign" @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:7271 +//line php5/php5.y:7204 type simpleIndirectReference struct { all []*expr.Variable @@ -2334,7 +2334,7 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) if yylex.(*Parser).currentToken.Value == "\xff" { - yylex.(*Parser).currentToken.Meta.SetTokenName(meta.NodeEnd).AppendTo(yylex.(*Parser).rootNode.GetMeta()) + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) } } case 2: @@ -2343,7 +2343,7 @@ yydefault: { if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if yyDollar[2].node != nil { @@ -2371,7 +2371,7 @@ yydefault: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2386,8 +2386,8 @@ yydefault: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2434,11 +2434,11 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.HaltCompiller, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OpenParenthesisToken, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2456,15 +2456,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:406 + //line php5/php5.y:407 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2474,15 +2475,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:422 + //line php5/php5.y:424 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2490,15 +2492,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:436 + //line php5/php5.y:438 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2506,15 +2508,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:450 + //line php5/php5.y:452 { useType := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) @@ -2524,16 +2526,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(useType.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:467 + //line php5/php5.y:469 { useType := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) @@ -2543,16 +2545,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(useType.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:484 + //line php5/php5.y:486 { yyVAL.node = yyDollar[1].node @@ -2560,25 +2562,25 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:500 + //line php5/php5.y:502 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:509 + //line php5/php5.y:511 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2586,7 +2588,7 @@ yydefault: } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:518 + //line php5/php5.y:520 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2596,13 +2598,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:532 + //line php5/php5.y:534 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2614,16 +2616,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:551 + //line php5/php5.y:552 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2633,15 +2634,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:567 + //line php5/php5.y:568 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2653,28 +2654,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:590 + //line php5/php5.y:591 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:599 + //line php5/php5.y:600 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2682,7 +2683,7 @@ yydefault: } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:608 + //line php5/php5.y:609 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2692,13 +2693,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:622 + //line php5/php5.y:623 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2710,15 +2711,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:640 + //line php5/php5.y:641 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2728,15 +2729,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:656 + //line php5/php5.y:657 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2748,28 +2749,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:679 + //line php5/php5.y:680 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:688 + //line php5/php5.y:689 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2777,7 +2778,7 @@ yydefault: } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:697 + //line php5/php5.y:698 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2787,13 +2788,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:711 + //line php5/php5.y:712 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2805,15 +2806,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:729 + //line php5/php5.y:730 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2823,15 +2824,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:745 + //line php5/php5.y:746 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2843,17 +2844,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:768 + //line php5/php5.y:769 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -2868,15 +2869,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, constList.Consts)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:789 + //line php5/php5.y:790 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -2889,19 +2890,19 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, constList)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:811 + //line php5/php5.y:812 { if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if yyDollar[2].node != nil { @@ -2912,7 +2913,7 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:824 + //line php5/php5.y:825 { yyVAL.list = []node.Node{} @@ -2920,7 +2921,7 @@ yydefault: } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:834 + //line php5/php5.y:835 { // error yyVAL.node = nil @@ -2929,7 +2930,7 @@ yydefault: } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:841 + //line php5/php5.y:842 { yyVAL.node = yyDollar[1].node @@ -2937,7 +2938,7 @@ yydefault: } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:847 + //line php5/php5.y:848 { yyVAL.node = yyDollar[1].node @@ -2945,7 +2946,7 @@ yydefault: } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:853 + //line php5/php5.y:854 { yyVAL.node = yyDollar[1].node @@ -2953,7 +2954,7 @@ yydefault: } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:859 + //line php5/php5.y:860 { yyVAL.node = stmt.NewHaltCompiler() @@ -2961,17 +2962,19 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.HaltCompiller, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OpenParenthesisToken, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + yylex.(*Parser).Begin(scanner.HALT_COMPILER) } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:879 + //line php5/php5.y:882 { yyVAL.node = yyDollar[1].node @@ -2979,7 +2982,7 @@ yydefault: } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:885 + //line php5/php5.y:888 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -2989,14 +2992,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Label, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:903 + //line php5/php5.y:906 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3004,14 +3007,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:916 + //line php5/php5.y:919 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -3025,15 +3028,21 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.If, (*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:936 + //line php5/php5.y:943 { stmts := stmt.NewStmtList(yyDollar[4].list) yyVAL.node = stmt.NewAltIf(yyDollar[2].node, stmts, yyDollar[5].list, yyDollar[6].node) @@ -3043,19 +3052,25 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.EndifToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[8].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.If, (*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[8].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[8].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:956 + //line php5/php5.y:967 { switch n := yyDollar[3].node.(type) { case *stmt.While: @@ -3070,15 +3085,21 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.While, (*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:977 + //line php5/php5.y:992 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) @@ -3086,18 +3107,24 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.WhileToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + if len((*yyDollar[4].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.While, (*yyDollar[4].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[4].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[4].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[4].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[4].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[4].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[4].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:994 + //line php5/php5.y:1013 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3116,17 +3143,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ForInitSemicolonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.ForCondSemicolonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.For, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.InitExpr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CondExpr, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.IncExpr, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1021 + //line php5/php5.y:1040 { switch n := yyDollar[3].node.(type) { case *stmt.Switch: @@ -3143,15 +3170,21 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Switch, (*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[2].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1044 + //line php5/php5.y:1067 { yyVAL.node = stmt.NewBreak(nil) @@ -3159,15 +3192,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1058 + //line php5/php5.y:1081 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3175,15 +3208,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1072 + //line php5/php5.y:1095 { yyVAL.node = stmt.NewContinue(nil) @@ -3191,15 +3224,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1086 + //line php5/php5.y:1109 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3207,15 +3240,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1100 + //line php5/php5.y:1123 { yyVAL.node = stmt.NewReturn(nil) @@ -3223,15 +3256,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1114 + //line php5/php5.y:1137 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3239,15 +3272,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1128 + //line php5/php5.y:1151 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3255,15 +3288,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1142 + //line php5/php5.y:1165 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3271,16 +3304,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1157 + //line php5/php5.y:1179 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3288,15 +3320,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1171 + //line php5/php5.y:1193 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3304,15 +3336,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1185 + //line php5/php5.y:1207 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3320,16 +3352,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1200 + //line php5/php5.y:1222 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3337,13 +3369,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1212 + //line php5/php5.y:1234 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3351,16 +3383,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1227 + //line php5/php5.y:1248 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3368,17 +3399,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Unset, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1243 + //line php5/php5.y:1264 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3408,19 +3439,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Foreach, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) if yyDollar[6].node != nil { - yyDollar[6].node.GetMeta().Cut(meta.TokenNameFilter(meta.DoubleArrowToken)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, (*yyDollar[6].node.GetFreeFloating())[freefloating.Key]) + delete((*yyDollar[6].node.GetFreeFloating()), freefloating.Key) } - yyDollar[7].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[7].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1283 + //line php5/php5.y:1304 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3450,19 +3482,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Foreach, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) if yyDollar[6].node != nil { - yyDollar[6].node.GetMeta().Cut(meta.TokenNameFilter(meta.DoubleArrowToken)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, (*yyDollar[6].node.GetFreeFloating())[freefloating.Key]) + delete((*yyDollar[6].node.GetFreeFloating()), freefloating.Key) } - yyDollar[7].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[7].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1323 + //line php5/php5.y:1344 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3471,15 +3504,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Declare, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ConstList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1338 + //line php5/php5.y:1359 { yyVAL.node = stmt.NewNop() @@ -3487,14 +3520,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1351 + //line php5/php5.y:1372 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3506,15 +3539,15 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Try, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1369 + //line php5/php5.y:1390 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3522,15 +3555,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1383 + //line php5/php5.y:1404 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3540,16 +3573,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Label, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1403 + //line php5/php5.y:1424 { yyVAL.list = []node.Node{} @@ -3557,32 +3590,32 @@ yydefault: } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1409 + //line php5/php5.y:1430 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) - catch := stmt.NewCatch([]node.Node{yyDollar[3].node}, variable, yyDollar[7].list) - yyVAL.list = append([]node.Node{catch}, yyDollar[9].list...) + catchNode := stmt.NewCatch([]node.Node{yyDollar[3].node}, variable, yyDollar[7].list) + yyVAL.list = append([]node.Node{catchNode}, yyDollar[9].list...) // save position identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) - catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + catchNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(catch.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(catch.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(catch.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(catch.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(catch.GetMeta()) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Catch, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Var, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Cond, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Stmts, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1435 + //line php5/php5.y:1456 { yyVAL.node = nil @@ -3590,7 +3623,7 @@ yydefault: } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1441 + //line php5/php5.y:1462 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3598,15 +3631,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Finally, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1458 + //line php5/php5.y:1479 { yyVAL.list = yyDollar[1].list @@ -3614,7 +3647,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1464 + //line php5/php5.y:1485 { yyVAL.list = []node.Node{} @@ -3622,7 +3655,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1473 + //line php5/php5.y:1494 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3630,7 +3663,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1479 + //line php5/php5.y:1500 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3638,7 +3671,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1488 + //line php5/php5.y:1509 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3650,19 +3683,19 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Catch, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1513 + //line php5/php5.y:1534 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3670,18 +3703,18 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1519 + //line php5/php5.y:1540 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1531 + //line php5/php5.y:1552 { yyVAL.node = yyDollar[1].node @@ -3689,7 +3722,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1540 + //line php5/php5.y:1561 { yyVAL.node = yyDollar[1].node @@ -3697,7 +3730,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1549 + //line php5/php5.y:1570 { yyVAL.node = yyDollar[1].node @@ -3705,31 +3738,31 @@ yydefault: } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1558 + //line php5/php5.y:1579 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1562 + //line php5/php5.y:1583 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1569 + //line php5/php5.y:1590 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1573 + //line php5/php5.y:1594 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1580 + //line php5/php5.y:1601 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[5].list, nil, yyDollar[8].list, "") @@ -3739,21 +3772,23 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[3].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[3].token.FreeFloating) } - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParamList, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[9].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1605 + //line php5/php5.y:1628 { name := node.NewIdentifier(yyDollar[2].token.Value) switch n := yyDollar[1].node.(type) { @@ -3775,15 +3810,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[7].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[7].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1633 + //line php5/php5.y:1656 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") @@ -3793,16 +3828,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[6].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1654 + //line php5/php5.y:1677 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") @@ -3810,13 +3845,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1666 + //line php5/php5.y:1689 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3826,14 +3861,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1681 + //line php5/php5.y:1704 { yyVAL.node = stmt.NewTrait(nil, nil, "") @@ -3841,13 +3876,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1693 + //line php5/php5.y:1716 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3857,14 +3892,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1711 + //line php5/php5.y:1734 { yyVAL.ClassExtends = nil @@ -3872,7 +3907,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1717 + //line php5/php5.y:1740 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3880,19 +3915,19 @@ yydefault: yyVAL.ClassExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ExtendsToken).AppendTo(yyVAL.ClassExtends.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClassExtends, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1732 + //line php5/php5.y:1755 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1739 + //line php5/php5.y:1762 { yyVAL.InterfaceExtends = nil @@ -3900,7 +3935,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1745 + //line php5/php5.y:1768 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3908,13 +3943,13 @@ yydefault: yyVAL.InterfaceExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ExtendsToken).AppendTo(yyVAL.InterfaceExtends.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.InterfaceExtends, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1760 + //line php5/php5.y:1783 { yyVAL.ClassImplements = nil @@ -3922,7 +3957,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1766 + //line php5/php5.y:1789 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3930,13 +3965,13 @@ yydefault: yyVAL.ClassImplements.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ImplementsToken).AppendTo(yyVAL.ClassImplements.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClassImplements, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1781 + //line php5/php5.y:1804 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3944,18 +3979,18 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1787 + //line php5/php5.y:1810 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1799 + //line php5/php5.y:1822 { yyVAL.node = nil @@ -3963,18 +3998,18 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1805 + //line php5/php5.y:1828 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1817 + //line php5/php5.y:1840 { yyVAL.node = yyDollar[1].node @@ -3982,7 +4017,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1823 + //line php5/php5.y:1846 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -3990,13 +4025,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1835 + //line php5/php5.y:1858 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4004,15 +4039,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1852 + //line php5/php5.y:1875 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4023,7 +4058,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1861 + //line php5/php5.y:1884 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4033,16 +4068,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndforToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1881 + //line php5/php5.y:1904 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4053,7 +4088,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1890 + //line php5/php5.y:1913 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4063,16 +4098,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndforeachToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1911 + //line php5/php5.y:1934 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4083,7 +4118,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1920 + //line php5/php5.y:1943 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4093,16 +4128,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EnddeclareToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1941 + //line php5/php5.y:1964 { name := node.NewIdentifier(yyDollar[1].token.Value) constant := stmt.NewConstant(name, yyDollar[3].node, "") @@ -4113,14 +4148,14 @@ yydefault: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1957 + //line php5/php5.y:1980 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -4131,15 +4166,15 @@ yydefault: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1978 + //line php5/php5.y:2001 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4149,14 +4184,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1993 + //line php5/php5.y:2016 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4166,16 +4201,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, yyDollar[2].token, meta.CaseSeparatorToken) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2010 + //line php5/php5.y:2032 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4185,16 +4219,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndswitchToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2027 + //line php5/php5.y:2049 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4205,18 +4239,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, yyDollar[2].token, meta.CaseSeparatorToken) - yyDollar[4].token.Meta.SetTokenName(meta.EndswitchToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2051 + //line php5/php5.y:2072 { yyVAL.list = []node.Node{} @@ -4224,7 +4257,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2057 + //line php5/php5.y:2078 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4233,15 +4266,15 @@ yydefault: _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_case.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_case.GetMeta()) - yylex.(*Parser).appendMetaToken(_case, yyDollar[4].token, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_case, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2072 + //line php5/php5.y:2093 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4250,27 +4283,27 @@ yydefault: _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_default.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_default.GetMeta()) - yylex.(*Parser).appendMetaToken(_default, yyDollar[3].token, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2091 + //line php5/php5.y:2112 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2095 + //line php5/php5.y:2116 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2103 + //line php5/php5.y:2124 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4281,7 +4314,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2112 + //line php5/php5.y:2133 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4291,16 +4324,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndwhileToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2134 + //line php5/php5.y:2155 { yyVAL.list = nil @@ -4308,7 +4341,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2140 + //line php5/php5.y:2161 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4317,15 +4350,21 @@ yydefault: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - yyDollar[3].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - yyDollar[3].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, yyDollar[2].token.FreeFloating) + if len((*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[3].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[3].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2159 + //line php5/php5.y:2184 { yyVAL.list = nil @@ -4333,7 +4372,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2165 + //line php5/php5.y:2190 { stmts := stmt.NewStmtList(yyDollar[5].list) _elseIf := stmt.NewAltElseIf(yyDollar[3].node, stmts) @@ -4344,16 +4383,22 @@ yydefault: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - yyDollar[3].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - yyDollar[3].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, yyDollar[2].token.FreeFloating) + if len((*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*yyDollar[3].node.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]) + delete((*yyDollar[3].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*yyDollar[3].node.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]) + delete((*yyDollar[3].node.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Cond, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2187 + //line php5/php5.y:2216 { yyVAL.node = nil @@ -4361,7 +4406,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2193 + //line php5/php5.y:2222 { yyVAL.node = stmt.NewElse(yyDollar[2].node) @@ -4369,13 +4414,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2209 + //line php5/php5.y:2238 { yyVAL.node = nil @@ -4383,7 +4428,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2215 + //line php5/php5.y:2244 { stmts := stmt.NewStmtList(yyDollar[3].list) yyVAL.node = stmt.NewAltElse(stmts) @@ -4393,14 +4438,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Else, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2234 + //line php5/php5.y:2263 { yyVAL.list = yyDollar[1].list @@ -4408,7 +4453,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2240 + //line php5/php5.y:2269 { yyVAL.list = nil @@ -4416,7 +4461,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2249 + //line php5/php5.y:2278 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4424,18 +4469,18 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2255 + //line php5/php5.y:2284 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2267 + //line php5/php5.y:2296 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4456,26 +4501,36 @@ yydefault: // save comments if yyDollar[1].node != nil { - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) } if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) } if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) } - if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - } else { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Variadic, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + // normalize + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, (*yyVAL.node.GetFreeFloating())[freefloating.Variadic]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Variadic) + } + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, (*yyVAL.node.GetFreeFloating())[freefloating.Ampersand]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Ampersand) + } + if yyDollar[1].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, (*yyVAL.node.GetFreeFloating())[freefloating.OptionalType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2305 + //line php5/php5.y:2341 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4496,27 +4551,37 @@ yydefault: // save comments if yyDollar[1].node != nil { - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) } if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) } if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) } - if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - } else { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Variadic, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[5].token.FreeFloating) + + // normalize + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, (*yyVAL.node.GetFreeFloating())[freefloating.Variadic]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Variadic) + } + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, (*yyVAL.node.GetFreeFloating())[freefloating.Ampersand]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Ampersand) + } + if yyDollar[1].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, (*yyVAL.node.GetFreeFloating())[freefloating.OptionalType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2348 + //line php5/php5.y:2391 { yyVAL.node = nil @@ -4524,7 +4589,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2354 + //line php5/php5.y:2397 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4532,13 +4597,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2366 + //line php5/php5.y:2409 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4546,13 +4611,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2378 + //line php5/php5.y:2421 { yyVAL.node = yyDollar[1].node @@ -4560,7 +4625,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2388 + //line php5/php5.y:2431 { yyVAL.node = node.NewArgumentList(nil) @@ -4568,14 +4633,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2401 + //line php5/php5.y:2444 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4583,14 +4648,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2414 + //line php5/php5.y:2457 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -4600,14 +4665,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2433 + //line php5/php5.y:2476 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4615,18 +4680,18 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2439 + //line php5/php5.y:2482 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2451 + //line php5/php5.y:2494 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4634,13 +4699,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) // save comments - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2463 + //line php5/php5.y:2506 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4648,13 +4713,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) // save comments - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2475 + //line php5/php5.y:2518 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) @@ -4662,13 +4727,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2487 + //line php5/php5.y:2530 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4676,24 +4741,24 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2502 + //line php5/php5.y:2545 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2511 + //line php5/php5.y:2554 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4701,7 +4766,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2521 + //line php5/php5.y:2564 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -4711,14 +4776,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2536 + //line php5/php5.y:2579 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -4726,15 +4791,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2550 + //line php5/php5.y:2592 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -4742,18 +4806,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.NodeStart) - yyDollar[4].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.Start, append(yyDollar[2].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token), (*yyDollar[3].node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.End, append((*yyDollar[3].node.GetFreeFloating())[freefloating.End], append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2571 + //line php5/php5.y:2611 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4766,15 +4828,15 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2590 + //line php5/php5.y:2630 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4787,16 +4849,16 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2610 + //line php5/php5.y:2650 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4809,14 +4871,14 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2628 + //line php5/php5.y:2668 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4829,15 +4891,15 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2651 + //line php5/php5.y:2691 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4845,7 +4907,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2657 + //line php5/php5.y:2697 { yyVAL.list = []node.Node{} @@ -4853,7 +4915,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2667 + //line php5/php5.y:2707 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4861,16 +4923,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.PropertyList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2682 + //line php5/php5.y:2721 { yyVAL.node = yyDollar[1].node @@ -4878,14 +4939,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ConstList, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2695 + //line php5/php5.y:2734 { yyVAL.node = yyDollar[1].node @@ -4893,7 +4954,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:2701 + //line php5/php5.y:2740 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[6].list, nil, yyDollar[8].node, "") @@ -4907,19 +4968,26 @@ yydefault: } // save comments - yyDollar[2].token.Meta.SetTokenName(meta.FunctionToken).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + if len(yyDollar[1].list) > 0 { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[2].token.FreeFloating) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[4].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[4].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[7].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2728 + //line php5/php5.y:2774 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4927,13 +4995,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2743 + //line php5/php5.y:2789 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4941,46 +5009,46 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2749 + //line php5/php5.y:2795 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2761 + //line php5/php5.y:2807 { yyVAL.node = stmt.NewNop() yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2774 + //line php5/php5.y:2819 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AdaptationList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2789 + //line php5/php5.y:2834 { yyVAL.list = nil @@ -4988,7 +5056,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2795 + //line php5/php5.y:2840 { yyVAL.list = yyDollar[1].list @@ -4996,7 +5064,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2804 + //line php5/php5.y:2849 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5004,7 +5072,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2810 + //line php5/php5.y:2855 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5012,31 +5080,31 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2819 + //line php5/php5.y:2864 { yyVAL.node = yyDollar[1].node // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.NameList, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2829 + //line php5/php5.y:2874 { yyVAL.node = yyDollar[1].node // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Alias, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2842 + //line php5/php5.y:2887 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5044,13 +5112,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.InsteadofToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2857 + //line php5/php5.y:2903 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5058,18 +5127,18 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2863 + //line php5/php5.y:2909 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2875 + //line php5/php5.y:2921 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5079,13 +5148,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2889 + //line php5/php5.y:2935 { yyVAL.node = yyDollar[1].node @@ -5093,7 +5162,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2898 + //line php5/php5.y:2944 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5103,14 +5172,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2916 + //line php5/php5.y:2963 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5120,14 +5190,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2931 + //line php5/php5.y:2979 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5135,13 +5206,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2946 + //line php5/php5.y:2995 { yyVAL.node = nil @@ -5149,7 +5221,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2952 + //line php5/php5.y:3001 { yyVAL.node = yyDollar[1].node @@ -5157,7 +5229,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2961 + //line php5/php5.y:3010 { yyVAL.node = stmt.NewNop() @@ -5165,14 +5237,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2974 + //line php5/php5.y:3023 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5180,14 +5252,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2990 + //line php5/php5.y:3039 { yyVAL.list = yyDollar[1].list @@ -5195,7 +5267,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2996 + //line php5/php5.y:3045 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5204,13 +5276,13 @@ yydefault: modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(modifier.GetMeta()) + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3012 + //line php5/php5.y:3061 { yyVAL.list = nil @@ -5218,7 +5290,7 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3018 + //line php5/php5.y:3067 { yyVAL.list = yyDollar[1].list @@ -5226,7 +5298,7 @@ yydefault: } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3027 + //line php5/php5.y:3076 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5234,7 +5306,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3033 + //line php5/php5.y:3082 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5242,7 +5314,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3042 + //line php5/php5.y:3091 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5250,13 +5322,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3054 + //line php5/php5.y:3103 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5264,13 +5336,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3066 + //line php5/php5.y:3115 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5278,13 +5350,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3078 + //line php5/php5.y:3127 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5292,13 +5364,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3090 + //line php5/php5.y:3139 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5306,13 +5378,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3102 + //line php5/php5.y:3151 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5320,13 +5392,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3117 + //line php5/php5.y:3166 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5339,15 +5411,15 @@ yydefault: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3136 + //line php5/php5.y:3185 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5360,16 +5432,16 @@ yydefault: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3156 + //line php5/php5.y:3205 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5382,14 +5454,14 @@ yydefault: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3174 + //line php5/php5.y:3223 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5402,15 +5474,15 @@ yydefault: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3196 + //line php5/php5.y:3245 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -5425,15 +5497,15 @@ yydefault: yyDollar[1].node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3217 + //line php5/php5.y:3266 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -5445,26 +5517,26 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ConstToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3238 + //line php5/php5.y:3287 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3247 + //line php5/php5.y:3296 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5472,7 +5544,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3257 + //line php5/php5.y:3306 { yyVAL.list = nil @@ -5480,7 +5552,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3263 + //line php5/php5.y:3312 { yyVAL.list = yyDollar[1].list @@ -5488,18 +5560,18 @@ yydefault: } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3272 + //line php5/php5.y:3321 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3281 + //line php5/php5.y:3330 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5507,7 +5579,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3290 + //line php5/php5.y:3339 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5515,7 +5587,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3296 + //line php5/php5.y:3345 { yyVAL.list = yyDollar[1].list @@ -5523,7 +5595,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3305 + //line php5/php5.y:3354 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -5532,16 +5604,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3321 + //line php5/php5.y:3368 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yyVAL.list = []node.Node{fetch} @@ -5550,16 +5620,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[1].token, meta.OpenSquareBracket) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[3].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3340 + //line php5/php5.y:3385 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5567,7 +5635,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3346 + //line php5/php5.y:3391 { yyVAL.list = yyDollar[1].list @@ -5575,7 +5643,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3352 + //line php5/php5.y:3397 { yyVAL.list = yyDollar[1].list @@ -5583,7 +5651,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3361 + //line php5/php5.y:3406 { yyVAL.list = nil @@ -5591,7 +5659,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3367 + //line php5/php5.y:3412 { yyVAL.list = yyDollar[1].list @@ -5599,7 +5667,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3376 + //line php5/php5.y:3421 { if yyDollar[3].node != nil { @@ -5611,32 +5679,32 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3395 + //line php5/php5.y:3440 { - list := expr.NewList(yyDollar[3].list) - yyVAL.node = assign.NewAssign(list, yyDollar[6].node) + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = assign.NewAssign(listNode, yyDollar[6].node) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3412 + //line php5/php5.y:3457 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5644,32 +5712,30 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3426 + //line php5/php5.y:3470 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) - // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3441 + //line php5/php5.y:3484 { var _new *expr.New @@ -5689,17 +5755,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, _new)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_new, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3469 + //line php5/php5.y:3511 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5707,29 +5772,27 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3481 + //line php5/php5.y:3523 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) - // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PlusEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3495 + //line php5/php5.y:3535 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5737,15 +5800,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MinusEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3509 + //line php5/php5.y:3548 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5753,15 +5815,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MulEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3561 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5769,15 +5830,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PowEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3537 + //line php5/php5.y:3574 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5785,15 +5845,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DivEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3551 + //line php5/php5.y:3587 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5801,15 +5860,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3565 + //line php5/php5.y:3600 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5817,15 +5875,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ModEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3579 + //line php5/php5.y:3613 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5833,15 +5890,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AndEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3593 + //line php5/php5.y:3626 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5849,15 +5905,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3607 + //line php5/php5.y:3639 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5865,15 +5920,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.XorEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3621 + //line php5/php5.y:3652 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5881,15 +5935,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3635 + //line php5/php5.y:3665 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5897,15 +5950,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3649 + //line php5/php5.y:3678 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5913,15 +5965,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IncToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3663 + //line php5/php5.y:3691 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5929,13 +5980,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3675 + //line php5/php5.y:3703 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5943,15 +5994,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DecToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3689 + //line php5/php5.y:3716 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5959,13 +6009,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3701 + //line php5/php5.y:3728 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5973,15 +6023,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3715 + //line php5/php5.y:3741 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5989,15 +6038,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3729 + //line php5/php5.y:3754 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -6005,15 +6053,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3743 + //line php5/php5.y:3767 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -6021,15 +6068,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3757 + //line php5/php5.y:3780 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -6037,15 +6083,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3771 + //line php5/php5.y:3793 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -6053,15 +6098,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3785 + //line php5/php5.y:3806 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -6069,15 +6113,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3799 + //line php5/php5.y:3819 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6085,15 +6128,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3813 + //line php5/php5.y:3832 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6101,15 +6143,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3827 + //line php5/php5.y:3845 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6117,15 +6158,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3841 + //line php5/php5.y:3858 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6133,15 +6173,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3855 + //line php5/php5.y:3871 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6149,15 +6188,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3869 + //line php5/php5.y:3884 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6165,15 +6203,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3883 + //line php5/php5.y:3897 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6181,15 +6218,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3897 + //line php5/php5.y:3910 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6197,15 +6233,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3911 + //line php5/php5.y:3923 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6213,15 +6248,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3925 + //line php5/php5.y:3936 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6229,15 +6263,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3939 + //line php5/php5.y:3949 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6245,13 +6278,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3951 + //line php5/php5.y:3961 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6259,13 +6292,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3963 + //line php5/php5.y:3973 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6273,13 +6306,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3975 + //line php5/php5.y:3985 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6287,13 +6320,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3987 + //line php5/php5.y:3997 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6301,15 +6334,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4001 + //line php5/php5.y:4010 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6317,15 +6349,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4015 + //line php5/php5.y:4023 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6333,15 +6364,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4029 + //line php5/php5.y:4036 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6349,16 +6379,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4044 + //line php5/php5.y:4050 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6366,15 +6395,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4058 + //line php5/php5.y:4063 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6382,15 +6410,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4072 + //line php5/php5.y:4076 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6398,15 +6425,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4086 + //line php5/php5.y:4089 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6414,15 +6440,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4100 + //line php5/php5.y:4102 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6430,26 +6455,27 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.InstanceofToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4114 + //line php5/php5.y:4115 { yyVAL.node = yyDollar[1].node yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - yyVAL.node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyVAL.node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyDollar[1].node, freefloating.Start, append((*yyDollar[1].node.GetFreeFloating())[freefloating.OpenParenthesisToken], (*yyDollar[1].node.GetFreeFloating())[freefloating.Start]...)) + delete((*yyDollar[1].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating(yyDollar[1].node, freefloating.End, append((*yyDollar[1].node.GetFreeFloating())[freefloating.End], (*yyDollar[1].node.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + delete((*yyDollar[1].node.GetFreeFloating()), freefloating.CloseParenthesisToken) } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4123 + //line php5/php5.y:4124 { yyVAL.node = yyDollar[1].node @@ -6457,32 +6483,30 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4129 + //line php5/php5.y:4130 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) for _, n := range yyDollar[4].list { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = yyVAL.node yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.MethodCall: nn.Variable = yyVAL.node yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) } // save position @@ -6493,7 +6517,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:4163 + //line php5/php5.y:4162 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6501,16 +6525,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4178 + //line php5/php5.y:4176 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6518,16 +6541,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4193 + //line php5/php5.y:4190 { yyVAL.node = yyDollar[1].node @@ -6535,7 +6557,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4199 + //line php5/php5.y:4196 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6543,14 +6565,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4212 + //line php5/php5.y:4209 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6558,14 +6580,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4225 + //line php5/php5.y:4222 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6573,14 +6595,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4238 + //line php5/php5.y:4235 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6588,14 +6610,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4251 + //line php5/php5.y:4248 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6603,14 +6625,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4264 + //line php5/php5.y:4261 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6618,14 +6640,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4277 + //line php5/php5.y:4274 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6633,43 +6655,37 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4290 + //line php5/php5.y:4287 { - var e *expr.Exit - if yyDollar[2].node != nil { - e = yyDollar[2].node.(*expr.Exit) - } else { - e = expr.NewExit(nil) - } - - yyVAL.node = e + e := yyDollar[2].node.(*expr.Exit) + yyVAL.node = yyDollar[2].node if strings.EqualFold(yyDollar[1].token.Value, "die") { e.Die = true } // save position - if yyDollar[2].node == nil { + if yyDollar[2].node.GetPosition() == nil { yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) } else { yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4317 + //line php5/php5.y:4308 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6677,13 +6693,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4329 + //line php5/php5.y:4320 { yyVAL.node = yyDollar[1].node @@ -6691,7 +6707,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4335 + //line php5/php5.y:4326 { yyVAL.node = yyDollar[1].node @@ -6699,7 +6715,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4341 + //line php5/php5.y:4332 { yyVAL.node = yyDollar[1].node @@ -6707,7 +6723,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4347 + //line php5/php5.y:4338 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6715,13 +6731,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4359 + //line php5/php5.y:4350 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6729,13 +6745,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4371 + //line php5/php5.y:4362 { yyVAL.node = expr.NewYield(nil, nil) @@ -6743,13 +6759,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:4383 + //line php5/php5.y:4374 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") @@ -6757,20 +6773,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[3].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[9].token.FreeFloating) + + // normalize + if yyDollar[6].ClosureUse == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.LexicalVars]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.LexicalVars) } - yyDollar[3].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:4402 + //line php5/php5.y:4400 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") @@ -6778,21 +6802,29 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.FunctionToken).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Static, yyDollar[2].token.FreeFloating) + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[4].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[4].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, yyDollar[8].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[10].token.FreeFloating) + + // normalize + if yyDollar[7].ClosureUse == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.LexicalVars]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.LexicalVars) } - yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[10].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4425 + //line php5/php5.y:4430 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6800,13 +6832,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4437 + //line php5/php5.y:4442 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6814,13 +6846,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4449 + //line php5/php5.y:4454 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6828,14 +6860,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4462 + //line php5/php5.y:4467 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6843,14 +6875,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4478 + //line php5/php5.y:4483 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6858,18 +6890,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4495 + //line php5/php5.y:4497 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6877,18 +6906,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4512 + //line php5/php5.y:4511 { str := scalar.NewString(yyDollar[1].token.Value) yyVAL.node = expr.NewArrayDimFetch(str, yyDollar[3].node) @@ -6898,17 +6924,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4530 + //line php5/php5.y:4527 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6916,18 +6940,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4550 + //line php5/php5.y:4544 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6935,15 +6956,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Array, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4564 + //line php5/php5.y:4558 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6951,20 +6972,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4580 + //line php5/php5.y:4574 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4587 + //line php5/php5.y:4581 { yyVAL.ClosureUse = nil @@ -6972,7 +6993,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4593 + //line php5/php5.y:4587 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6980,15 +7001,15 @@ yydefault: yyVAL.ClosureUse.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.ClosureUse.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.ClosureUse.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.ClosureUse.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.Use, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.LexicalVarList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4610 + //line php5/php5.y:4604 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6999,15 +7020,15 @@ yydefault: variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4627 + //line php5/php5.y:4621 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7020,16 +7041,16 @@ yydefault: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4647 + //line php5/php5.y:4641 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7040,14 +7061,14 @@ yydefault: variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4663 + //line php5/php5.y:4657 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7060,15 +7081,15 @@ yydefault: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4685 + //line php5/php5.y:4679 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) @@ -7078,13 +7099,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, yyDollar[2].node)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4699 + //line php5/php5.y:4693 { funcName := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) @@ -7094,14 +7115,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(funcName, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4714 + //line php5/php5.y:4708 { funcName := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) @@ -7111,13 +7132,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4728 + //line php5/php5.y:4722 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7125,14 +7146,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4741 + //line php5/php5.y:4735 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7140,14 +7161,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4754 + //line php5/php5.y:4748 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7155,14 +7176,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4767 + //line php5/php5.y:4761 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7170,26 +7191,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4780 + //line php5/php5.y:4774 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4793 + //line php5/php5.y:4789 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7197,13 +7220,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4805 + //line php5/php5.y:4801 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -7211,13 +7234,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4817 + //line php5/php5.y:4813 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7225,14 +7248,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4830 + //line php5/php5.y:4826 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7240,13 +7263,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4845 + //line php5/php5.y:4841 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -7254,13 +7277,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4857 + //line php5/php5.y:4853 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7268,14 +7291,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4870 + //line php5/php5.y:4866 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7283,13 +7306,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4885 + //line php5/php5.y:4881 { yyVAL.node = yyDollar[1].node @@ -7297,7 +7320,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4891 + //line php5/php5.y:4887 { yyVAL.node = yyDollar[1].node @@ -7305,12 +7328,12 @@ yydefault: } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4900 + //line php5/php5.y:4896 { yyVAL.node = yyDollar[1].node // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyDollar[3].list[0].GetMeta()) + yylex.(*Parser).setFreeFloating(yyDollar[3].list[0], freefloating.Var, yyDollar[2].token.FreeFloating) for _, n := range yyDollar[3].list { switch nn := n.(type) { @@ -7318,13 +7341,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) } } @@ -7334,13 +7357,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) } } @@ -7348,7 +7371,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4941 + //line php5/php5.y:4937 { yyVAL.node = yyDollar[1].node @@ -7356,7 +7379,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4951 + //line php5/php5.y:4947 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -7364,7 +7387,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4957 + //line php5/php5.y:4953 { yyVAL.list = []node.Node{} @@ -7372,26 +7395,26 @@ yydefault: } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4967 + //line php5/php5.y:4963 { yyVAL.list = yyDollar[2].list // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyDollar[2].list[0].GetMeta()) + yylex.(*Parser).setFreeFloating(yyDollar[2].list[0], freefloating.Var, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4979 + //line php5/php5.y:4975 { - yyVAL.node = nil + yyVAL.node = expr.NewExit(nil) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4985 + //line php5/php5.y:4981 { yyVAL.node = expr.NewExit(nil) @@ -7399,16 +7422,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) - yyDollar[2].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Exit, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5000 + //line php5/php5.y:4994 { yyVAL.node = expr.NewExit(yyDollar[1].node) @@ -7422,12 +7443,14 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) // save comments - yyDollar[1].node.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Exit, (*yyDollar[1].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) + delete((*yyDollar[1].node.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, (*yyDollar[1].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) + delete((*yyDollar[1].node.GetFreeFloating()), freefloating.CloseParenthesisToken) } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5020 + //line php5/php5.y:5014 { yyVAL.list = []node.Node{} @@ -7435,15 +7458,19 @@ yydefault: } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5026 + //line php5/php5.y:5020 { - yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} + part := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5032 + //line php5/php5.y:5030 { yyVAL.list = yyDollar[1].list @@ -7451,7 +7478,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5041 + //line php5/php5.y:5039 { yyVAL.node = nil @@ -7459,7 +7486,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5047 + //line php5/php5.y:5045 { yyVAL.node = yyDollar[1].node @@ -7467,7 +7494,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5056 + //line php5/php5.y:5054 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7475,13 +7502,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5068 + //line php5/php5.y:5066 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7489,13 +7516,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5080 + //line php5/php5.y:5078 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7503,13 +7530,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5092 + //line php5/php5.y:5090 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7517,13 +7544,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5104 + //line php5/php5.y:5102 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7531,13 +7558,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5116 + //line php5/php5.y:5114 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7545,13 +7572,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5128 + //line php5/php5.y:5126 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7559,13 +7586,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5140 + //line php5/php5.y:5138 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7573,13 +7600,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5152 + //line php5/php5.y:5150 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7587,13 +7614,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5164 + //line php5/php5.y:5162 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7601,13 +7628,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5176 + //line php5/php5.y:5174 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7617,13 +7644,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5190 + //line php5/php5.y:5188 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7631,13 +7658,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5205 + //line php5/php5.y:5203 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7647,16 +7674,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5225 + //line php5/php5.y:5222 { yyVAL.node = yyDollar[1].node @@ -7664,7 +7690,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5234 + //line php5/php5.y:5231 { yyVAL.node = yyDollar[1].node @@ -7672,7 +7698,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5240 + //line php5/php5.y:5237 { yyVAL.node = yyDollar[1].node @@ -7680,7 +7706,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5246 + //line php5/php5.y:5243 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -7690,13 +7716,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5260 + //line php5/php5.y:5257 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -7706,14 +7732,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5275 + //line php5/php5.y:5272 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -7723,13 +7749,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5289 + //line php5/php5.y:5286 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7737,15 +7763,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Array, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5303 + //line php5/php5.y:5300 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7753,14 +7779,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5316 + //line php5/php5.y:5313 { yyVAL.node = yyDollar[1].node @@ -7768,7 +7794,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5322 + //line php5/php5.y:5319 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7776,13 +7802,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5334 + //line php5/php5.y:5331 { yyVAL.node = yyDollar[1].node @@ -7790,7 +7816,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5343 + //line php5/php5.y:5340 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7798,18 +7824,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5360 + //line php5/php5.y:5354 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -7817,15 +7840,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5374 + //line php5/php5.y:5367 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -7833,15 +7855,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5388 + //line php5/php5.y:5380 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -7849,15 +7870,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5402 + //line php5/php5.y:5393 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -7865,15 +7885,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5416 + //line php5/php5.y:5406 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -7881,15 +7900,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5430 + //line php5/php5.y:5419 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -7897,15 +7915,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5444 + //line php5/php5.y:5432 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -7913,13 +7930,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5456 + //line php5/php5.y:5444 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -7927,13 +7944,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5468 + //line php5/php5.y:5456 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -7941,15 +7958,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5482 + //line php5/php5.y:5469 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -7957,15 +7973,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5496 + //line php5/php5.y:5482 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -7973,15 +7988,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5510 + //line php5/php5.y:5495 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -7989,15 +8003,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5524 + //line php5/php5.y:5508 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -8005,15 +8018,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5538 + //line php5/php5.y:5521 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -8021,15 +8033,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5552 + //line php5/php5.y:5534 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -8037,15 +8048,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5566 + //line php5/php5.y:5547 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -8053,15 +8063,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5580 + //line php5/php5.y:5560 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -8069,15 +8078,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5594 + //line php5/php5.y:5573 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -8085,15 +8093,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5608 + //line php5/php5.y:5586 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -8101,15 +8108,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5622 + //line php5/php5.y:5599 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -8117,15 +8123,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5636 + //line php5/php5.y:5612 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -8133,15 +8138,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5650 + //line php5/php5.y:5625 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -8149,15 +8153,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5664 + //line php5/php5.y:5638 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -8165,16 +8168,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5679 + //line php5/php5.y:5652 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -8182,15 +8184,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5693 + //line php5/php5.y:5665 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -8198,15 +8199,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5707 + //line php5/php5.y:5678 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8214,15 +8214,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5721 + //line php5/php5.y:5691 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8230,15 +8229,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5735 + //line php5/php5.y:5704 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -8246,16 +8244,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5750 + //line php5/php5.y:5718 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -8263,16 +8260,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5765 + //line php5/php5.y:5732 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -8280,13 +8276,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5777 + //line php5/php5.y:5744 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -8294,27 +8290,25 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5789 + //line php5/php5.y:5756 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5804 + //line php5/php5.y:5769 { yyVAL.node = yyDollar[1].node @@ -8322,7 +8316,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5810 + //line php5/php5.y:5775 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -8332,28 +8326,30 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5824 + //line php5/php5.y:5789 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) + + // save position name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5837 + //line php5/php5.y:5804 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -8363,13 +8359,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5854 + //line php5/php5.y:5821 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = expr.NewVariable(name) @@ -8379,14 +8375,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5869 + //line php5/php5.y:5835 { yyVAL.node = yyDollar[1].node @@ -8394,7 +8389,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5875 + //line php5/php5.y:5841 { yyVAL.node = yyDollar[1].node @@ -8402,7 +8397,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5881 + //line php5/php5.y:5847 { yyVAL.node = yyDollar[1].node @@ -8410,7 +8405,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5887 + //line php5/php5.y:5853 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -8418,13 +8413,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5899 + //line php5/php5.y:5865 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -8432,13 +8427,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5911 + //line php5/php5.y:5877 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -8446,13 +8441,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5926 + //line php5/php5.y:5892 { yyVAL.list = nil @@ -8460,32 +8455,32 @@ yydefault: } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5932 + //line php5/php5.y:5898 { yyVAL.list = yyDollar[1].list // save comments if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 423: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5946 + //line php5/php5.y:5912 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5950 + //line php5/php5.y:5916 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5957 + //line php5/php5.y:5923 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8494,16 +8489,15 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5973 + //line php5/php5.y:5938 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8512,15 +8506,14 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - - yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5988 + //line php5/php5.y:5952 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -8529,15 +8522,14 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6003 + //line php5/php5.y:5966 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -8545,13 +8537,14 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6018 + //line php5/php5.y:5982 { yyVAL.node = yyDollar[1].node @@ -8559,7 +8552,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6024 + //line php5/php5.y:5988 { yyVAL.node = yyDollar[1].node @@ -8567,35 +8560,43 @@ yydefault: } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6033 + //line php5/php5.y:5997 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.Start, append((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken], (*yyDollar[2].node.GetFreeFloating())[freefloating.Start]...)) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.End, append((*yyDollar[2].node.GetFreeFloating())[freefloating.End], (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + } + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.OpenParenthesisToken, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.CloseParenthesisToken, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6045 + //line php5/php5.y:6013 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.Start, append((*yyDollar[2].node.GetFreeFloating())[freefloating.OpenParenthesisToken], (*yyDollar[2].node.GetFreeFloating())[freefloating.Start]...)) + } + if len((*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.End, append((*yyDollar[2].node.GetFreeFloating())[freefloating.End], (*yyDollar[2].node.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + } + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.OpenParenthesisToken, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).setFreeFloating(yyDollar[2].node, freefloating.CloseParenthesisToken, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6061 + //line php5/php5.y:6033 { yyVAL.node = yyDollar[1].node @@ -8603,7 +8604,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6071 + //line php5/php5.y:6043 { yyVAL.node = yyDollar[1].node @@ -8611,7 +8612,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6080 + //line php5/php5.y:6052 { yyVAL.node = yyDollar[1].node @@ -8619,7 +8620,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6089 + //line php5/php5.y:6061 { yyVAL.node = yyDollar[1].node @@ -8629,7 +8630,7 @@ yydefault: } // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyDollar[3].list[0].GetMeta()) + yylex.(*Parser).setFreeFloating(yyDollar[3].list[0], freefloating.Var, yyDollar[2].token.FreeFloating) for _, n := range yyDollar[3].list { switch nn := n.(type) { @@ -8637,19 +8638,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) } } @@ -8659,19 +8660,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) } } @@ -8679,7 +8680,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6147 + //line php5/php5.y:6119 { yyVAL.node = yyDollar[1].node @@ -8687,7 +8688,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6156 + //line php5/php5.y:6128 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -8695,7 +8696,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6162 + //line php5/php5.y:6134 { yyVAL.list = []node.Node{} @@ -8703,7 +8704,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6172 + //line php5/php5.y:6144 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -8713,13 +8714,13 @@ yydefault: yyVAL.list = yyDollar[2].list // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyDollar[2].list[0].GetMeta()) + yylex.(*Parser).setFreeFloating(yyDollar[2].list[0], freefloating.Var, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6189 + //line php5/php5.y:6161 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8728,16 +8729,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6205 + //line php5/php5.y:6175 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = []node.Node{yyDollar[1].node, fetch} @@ -8746,16 +8745,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6224 + //line php5/php5.y:6192 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) @@ -8766,7 +8763,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6236 + //line php5/php5.y:6204 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8774,7 +8771,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6242 + //line php5/php5.y:6210 { yyVAL.list = yyDollar[1].list @@ -8782,7 +8779,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6248 + //line php5/php5.y:6216 { yyVAL.list = nil @@ -8790,7 +8787,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6257 + //line php5/php5.y:6225 { yyVAL.node = yyDollar[1].node @@ -8798,7 +8795,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6263 + //line php5/php5.y:6231 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8812,7 +8809,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6278 + //line php5/php5.y:6246 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8820,15 +8817,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6292 + //line php5/php5.y:6259 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8836,15 +8832,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6309 + //line php5/php5.y:6275 { yyVAL.node = yyDollar[1].node @@ -8852,7 +8847,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6318 + //line php5/php5.y:6284 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8860,18 +8855,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6335 + //line php5/php5.y:6298 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8879,18 +8871,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6355 + //line php5/php5.y:6315 { yyVAL.node = yyDollar[1].node @@ -8898,7 +8887,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6361 + //line php5/php5.y:6321 { yyVAL.node = yyDollar[1].node @@ -8906,7 +8895,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6367 + //line php5/php5.y:6327 { yyVAL.node = yyDollar[1].node @@ -8914,7 +8903,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6377 + //line php5/php5.y:6337 { yyVAL.node = yyDollar[1].node @@ -8922,7 +8911,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6383 + //line php5/php5.y:6343 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8936,7 +8925,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6395 + //line php5/php5.y:6355 { yyVAL.node = yyDollar[1].node @@ -8944,7 +8933,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6404 + //line php5/php5.y:6364 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8952,18 +8941,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6421 + //line php5/php5.y:6378 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8971,18 +8957,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6438 + //line php5/php5.y:6392 { yyVAL.node = yyDollar[1].node @@ -8990,7 +8973,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6448 + //line php5/php5.y:6402 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -9000,14 +8983,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6463 + //line php5/php5.y:6417 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -9015,18 +8998,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.NodeStart) - yyDollar[4].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.Start, append(yyDollar[2].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token), (*yyDollar[3].node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.End, append((*yyDollar[3].node.GetFreeFloating())[freefloating.End], append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6483 + //line php5/php5.y:6435 { yyVAL.node = nil @@ -9034,7 +9015,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6489 + //line php5/php5.y:6441 { yyVAL.node = yyDollar[1].node @@ -9042,7 +9023,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6499 + //line php5/php5.y:6451 { yyVAL.list = yyDollar[1].list @@ -9050,7 +9031,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6505 + //line php5/php5.y:6457 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -9062,7 +9043,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6518 + //line php5/php5.y:6470 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -9071,16 +9052,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6534 + //line php5/php5.y:6484 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -9089,16 +9068,14 @@ yydefault: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[2].token, meta.OpenCurlyBracesToken) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, yyDollar[4].token, meta.CloseCurlyBracesToken) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6550 + //line php5/php5.y:6498 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -9110,7 +9087,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6563 + //line php5/php5.y:6511 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -9118,13 +9095,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6575 + //line php5/php5.y:6523 { yyVAL.node = yyDollar[2].node @@ -9132,16 +9109,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6593 + //line php5/php5.y:6539 { n := expr.NewVariable(nil) yyVAL.simpleIndirectReference = simpleIndirectReference{[]*expr.Variable{n}, n} @@ -9150,14 +9125,14 @@ yydefault: n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(n.GetMeta()) - yylex.(*Parser).appendMetaToken(n, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(n, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6607 + //line php5/php5.y:6553 { n := expr.NewVariable(nil) @@ -9170,14 +9145,14 @@ yydefault: n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(n.GetMeta()) - yylex.(*Parser).appendMetaToken(n, yyDollar[2].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(n, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6628 + //line php5/php5.y:6574 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -9186,13 +9161,13 @@ yydefault: yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6641 + //line php5/php5.y:6587 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -9204,38 +9179,39 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6655 + //line php5/php5.y:6601 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6666 + //line php5/php5.y:6613 { - item := expr.NewList(yyDollar[3].list) - yyVAL.node = expr.NewArrayItem(nil, item) + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = expr.NewArrayItem(nil, listNode) // save position - item.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) - yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(listNode)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6682 + //line php5/php5.y:6629 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -9243,7 +9219,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6692 + //line php5/php5.y:6639 { yyVAL.list = []node.Node{} @@ -9251,7 +9227,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6698 + //line php5/php5.y:6645 { yyVAL.list = yyDollar[1].list @@ -9261,14 +9237,14 @@ yydefault: // save comments if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6716 + //line php5/php5.y:6663 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9277,16 +9253,15 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6732 + //line php5/php5.y:6678 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9295,15 +9270,14 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - - yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6747 + //line php5/php5.y:6692 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -9312,15 +9286,14 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6762 + //line php5/php5.y:6706 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -9328,13 +9301,14 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6774 + //line php5/php5.y:6719 { reference := expr.NewReference(yyDollar[6].node) arrayItem := expr.NewArrayItem(yyDollar[3].node, reference) @@ -9345,17 +9319,16 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6793 + //line php5/php5.y:6737 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9366,14 +9339,14 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6809 + //line php5/php5.y:6753 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(yyDollar[1].node, reference) @@ -9384,16 +9357,15 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6827 + //line php5/php5.y:6770 { reference := expr.NewReference(yyDollar[2].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9404,13 +9376,13 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6845 + //line php5/php5.y:6788 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -9418,7 +9390,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6851 + //line php5/php5.y:6794 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -9427,13 +9399,13 @@ yydefault: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6864 + //line php5/php5.y:6807 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9441,7 +9413,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6870 + //line php5/php5.y:6813 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -9450,13 +9422,13 @@ yydefault: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6886 + //line php5/php5.y:6829 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -9466,14 +9438,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6901 + //line php5/php5.y:6844 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9485,17 +9457,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6921 + //line php5/php5.y:6862 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9509,15 +9479,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6941 + //line php5/php5.y:6882 { variable := expr.NewVariable(yyDollar[2].node) @@ -9527,15 +9497,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 499: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6957 + //line php5/php5.y:6897 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -9547,16 +9516,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 500: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6976 + //line php5/php5.y:6914 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -9568,32 +9535,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.OpenSquareBracket) - yyDollar[5].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.CloseSquareBracket) - yyDollar[6].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[5].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[6].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 501: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6998 + //line php5/php5.y:6933 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7012 + //line php5/php5.y:6946 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -9601,13 +9564,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7024 + //line php5/php5.y:6958 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -9619,11 +9582,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 504: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7038 + //line php5/php5.y:6975 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -9633,14 +9599,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7056 + //line php5/php5.y:6993 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -9648,15 +9614,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Isset, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7070 + //line php5/php5.y:7007 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9664,15 +9630,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Empty, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 507: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7084 + //line php5/php5.y:7021 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9680,15 +9646,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Empty, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7098 + //line php5/php5.y:7035 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -9696,13 +9662,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 509: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7110 + //line php5/php5.y:7047 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -9710,13 +9676,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 510: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7122 + //line php5/php5.y:7059 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -9724,15 +9690,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Eval, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7136 + //line php5/php5.y:7073 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -9740,13 +9706,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 512: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7148 + //line php5/php5.y:7085 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -9754,13 +9720,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 513: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7163 + //line php5/php5.y:7100 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9768,18 +9734,18 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7169 + //line php5/php5.y:7106 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7181 + //line php5/php5.y:7118 { yyVAL.node = yyDollar[1].node @@ -9787,7 +9753,7 @@ yydefault: } case 516: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7187 + //line php5/php5.y:7124 { yyVAL.node = yyDollar[1].node @@ -9795,7 +9761,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7196 + //line php5/php5.y:7133 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9805,16 +9771,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7213 + //line php5/php5.y:7149 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9824,16 +9789,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7233 + //line php5/php5.y:7168 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9843,16 +9807,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 520: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7253 + //line php5/php5.y:7187 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9862,10 +9825,9 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/php5/php5.y b/php5/php5.y index 80316ec..57a8ba7 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -5,7 +5,7 @@ import ( "strings" "strconv" - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/scanner" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/scalar" @@ -285,7 +285,7 @@ start: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) if yylex.(*Parser).currentToken.Value == "\xff" { - yylex.(*Parser).currentToken.Meta.SetTokenName(meta.NodeEnd).AppendTo(yylex.(*Parser).rootNode.GetMeta()) + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) } } ; @@ -295,7 +295,7 @@ top_statement_list: { if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if $2 != nil { @@ -322,7 +322,7 @@ namespace_name: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -335,8 +335,8 @@ namespace_name: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -376,11 +376,11 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -396,9 +396,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -412,9 +413,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -426,9 +428,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -440,9 +442,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -456,10 +458,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(useType.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -473,10 +475,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(useType.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -488,8 +490,8 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -501,7 +503,7 @@ use_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -524,7 +526,7 @@ use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -540,10 +542,9 @@ use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -557,9 +558,9 @@ use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -575,11 +576,11 @@ use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -591,7 +592,7 @@ use_function_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -614,7 +615,7 @@ use_function_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -630,9 +631,9 @@ use_function_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -646,9 +647,9 @@ use_function_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -664,11 +665,11 @@ use_function_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -680,7 +681,7 @@ use_const_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -703,7 +704,7 @@ use_const_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -719,9 +720,9 @@ use_const_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -735,9 +736,9 @@ use_const_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -753,11 +754,11 @@ use_const_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -779,9 +780,9 @@ constant_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, constList.Consts)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -798,9 +799,9 @@ constant_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, constList)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -811,7 +812,7 @@ inner_statement_list: { if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if $2 != nil { @@ -863,13 +864,15 @@ inner_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + yylex.(*Parser).Begin(scanner.HALT_COMPILER) } ; @@ -891,8 +894,8 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -907,8 +910,8 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -926,9 +929,13 @@ unticked_statement: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -942,13 +949,17 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.EndifToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $8, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $8.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($8)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -967,9 +978,13 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -981,12 +996,16 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.WhileToken).AppendTo($$.GetMeta()) - $4.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $4.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + if len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$4.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$4.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$4.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$4.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$4.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$4.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1009,11 +1028,11 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.ForInitSemicolonToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.ForCondSemicolonToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.For, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.InitExpr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CondExpr, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.IncExpr, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1034,9 +1053,13 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) - $2.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Switch, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1048,9 +1071,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1062,9 +1085,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1076,9 +1099,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1090,9 +1113,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1104,9 +1127,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1118,9 +1141,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1132,9 +1155,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1146,10 +1169,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1161,9 +1183,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1175,9 +1197,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1189,10 +1211,10 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1204,7 +1226,7 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1216,10 +1238,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1231,11 +1252,11 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Unset, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1269,13 +1290,13 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) if $6 != nil { - $6.GetMeta().Cut(meta.TokenNameFilter(meta.DoubleArrowToken)).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) } - $7.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1309,13 +1330,13 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) if $6 != nil { - $6.GetMeta().Cut(meta.TokenNameFilter(meta.DoubleArrowToken)).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) } - $7.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1328,9 +1349,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Declare, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1342,8 +1363,8 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1359,9 +1380,9 @@ unticked_statement: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Try, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1373,9 +1394,9 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1389,10 +1410,10 @@ unticked_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1409,22 +1430,22 @@ catch_statement: { identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) variable := expr.NewVariable(identifier) - catch := stmt.NewCatch([]node.Node{$3}, variable, $7) - $$ = append([]node.Node{catch}, $9...) + catchNode := stmt.NewCatch([]node.Node{$3}, variable, $7) + $$ = append([]node.Node{catchNode}, $9...) // save position identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) - catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + catchNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(catch.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(catch.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(catch.GetMeta()) - $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(catch.GetMeta()) - $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(catch.GetMeta()) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Catch, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Cond, $6.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Stmts, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1445,9 +1466,9 @@ finally_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Finally, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1496,13 +1517,13 @@ additional_catch: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Catch, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1520,7 +1541,7 @@ unset_variables: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1586,15 +1607,17 @@ unticked_function_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) } - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ParamList, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Params, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $9.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1623,9 +1646,9 @@ unticked_class_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $5.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1639,10 +1662,10 @@ unticked_class_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1658,7 +1681,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1672,8 +1695,8 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1685,7 +1708,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1699,8 +1722,8 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1721,7 +1744,7 @@ extends_from: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ExtendsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1749,7 +1772,7 @@ interface_extends_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ExtendsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1770,7 +1793,7 @@ implements_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ImplementsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1788,7 +1811,7 @@ interface_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1806,7 +1829,7 @@ foreach_optional_arg: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Key, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1827,7 +1850,7 @@ foreach_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1839,9 +1862,9 @@ foreach_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1867,10 +1890,10 @@ for_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndforToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1896,10 +1919,10 @@ foreach_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndforeachToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1926,10 +1949,10 @@ declare_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EnddeclareToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1948,8 +1971,8 @@ declare_list: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1964,9 +1987,9 @@ declare_list: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1984,8 +2007,8 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1999,10 +2022,9 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - $2.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, $2, meta.CaseSeparatorToken) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2016,10 +2038,10 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndswitchToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2034,12 +2056,11 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, $2, meta.CaseSeparatorToken) - $4.Meta.SetTokenName(meta.EndswitchToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2062,9 +2083,9 @@ case_list: _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_case.GetMeta()) - $4.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_case.GetMeta()) - yylex.(*Parser).appendMetaToken(_case, $4, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_case, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2077,9 +2098,9 @@ case_list: _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_default.GetMeta()) - $3.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_default.GetMeta()) - yylex.(*Parser).appendMetaToken(_default, $3, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2118,10 +2139,10 @@ while_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndwhileToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2145,9 +2166,13 @@ elseif_list: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - $3.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - $3.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*$3.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.CloseParenthesisToken) + } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2172,10 +2197,14 @@ new_elseif_list: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - $3.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - $3.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).Cut(meta.NotFilter(meta.TypeFilter(meta.TokenType))).AppendTo(_elseIf.GetMeta()) - $4.Meta.SetTokenName(meta.ColonToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + if len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, (*$3.GetFreeFloating())[freefloating.CloseParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.CloseParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Cond, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2197,7 +2226,7 @@ else_single: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2221,8 +2250,8 @@ new_else_single: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Else, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2256,7 +2285,7 @@ non_empty_parameter_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2284,20 +2313,27 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) } if $3 != nil { - $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) } - if $1 == nil && $2 == nil && $3 == nil { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - } else { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + // normalize + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + } + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + } + if $1 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2322,21 +2358,28 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) } if $3 != nil { - $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) } - if $1 == nil && $2 == nil && $3 == nil { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - } else { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + + // normalize + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + } + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + } + if $1 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2358,7 +2401,7 @@ optional_class_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2370,7 +2413,7 @@ optional_class_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2392,8 +2435,8 @@ function_call_parameter_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2405,8 +2448,8 @@ function_call_parameter_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2420,8 +2463,8 @@ function_call_parameter_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2440,7 +2483,7 @@ non_empty_function_call_parameter_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2455,7 +2498,7 @@ function_call_parameter: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) // save comments - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2467,7 +2510,7 @@ function_call_parameter: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) // save comments - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2479,7 +2522,7 @@ function_call_parameter: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) // save comments - $1.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2491,7 +2534,7 @@ function_call_parameter: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2503,7 +2546,7 @@ global_var_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2527,8 +2570,8 @@ global_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2540,9 +2583,8 @@ global_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2554,12 +2596,10 @@ global_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.NodeStart) - $4.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2580,9 +2620,9 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2599,10 +2639,10 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2619,8 +2659,8 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2637,9 +2677,9 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2671,10 +2711,9 @@ class_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2686,8 +2725,8 @@ class_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2711,13 +2750,20 @@ class_statement: } // save comments - $2.Meta.SetTokenName(meta.FunctionToken).AppendTo($$.GetMeta()) - if $3 != nil { - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + if len($1) > 0 { + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $2.FreeFloating) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $5.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $7.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2732,7 +2778,7 @@ trait_use_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2750,7 +2796,7 @@ trait_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2764,9 +2810,8 @@ trait_adaptations: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2777,8 +2822,8 @@ trait_adaptations: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2820,8 +2865,8 @@ trait_adaptation_statement: $$ = $1; // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.NameList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2830,8 +2875,8 @@ trait_adaptation_statement: $$ = $1; // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Alias, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2846,7 +2891,8 @@ trait_precedence: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.InsteadofToken).AppendTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2864,7 +2910,7 @@ trait_reference_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2881,7 +2927,7 @@ trait_method_reference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2904,8 +2950,9 @@ trait_method_reference_fully_qualified: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2922,8 +2969,9 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2935,7 +2983,8 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2965,8 +3014,8 @@ method_body: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2978,8 +3027,8 @@ method_body: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3001,7 +3050,7 @@ variable_modifiers: modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(modifier.GetMeta()) + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3046,7 +3095,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3058,7 +3107,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3070,7 +3119,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3082,7 +3131,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3094,7 +3143,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3106,7 +3155,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3126,9 +3175,9 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3145,10 +3194,10 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3165,8 +3214,8 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3183,9 +3232,9 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3207,9 +3256,9 @@ class_constant_declaration: $1.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3225,9 +3274,9 @@ class_constant_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ConstToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) - $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3239,7 +3288,7 @@ echo_expr_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3273,7 +3322,7 @@ non_empty_for_expr: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3310,10 +3359,8 @@ chaining_dereference: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $4, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3326,10 +3373,8 @@ chaining_dereference: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) // save comments - $1.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $1, meta.OpenSquareBracket) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $3, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3384,7 +3429,7 @@ new_expr: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3393,18 +3438,18 @@ new_expr: expr_without_variable: T_LIST '(' assignment_list ')' '=' expr { - list := expr.NewList($3) - $$ = assign.NewAssign(list, $6) + listNode := expr.NewList($3) + $$ = assign.NewAssign(listNode, $6) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3416,9 +3461,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3429,11 +3473,10 @@ expr_without_variable: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) - // save comments - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3457,11 +3500,10 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, _new)) // save comments - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_new, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3473,7 +3515,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3484,10 +3526,8 @@ expr_without_variable: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - // save comments - $2.Meta.SetTokenName(meta.PlusEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3499,9 +3539,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MinusEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3513,9 +3552,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MulEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3527,9 +3565,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PowEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3541,9 +3578,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DivEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3555,9 +3591,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3569,9 +3604,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ModEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3583,9 +3617,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AndEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3597,9 +3630,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.OrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3611,9 +3643,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.XorEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3625,9 +3656,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3639,9 +3669,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3653,9 +3682,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.IncToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3667,7 +3695,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3679,9 +3707,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.DecToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3693,7 +3720,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3705,9 +3732,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3719,9 +3745,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3733,9 +3758,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3747,9 +3771,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3761,9 +3784,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3775,9 +3797,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3789,9 +3810,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3803,9 +3823,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3817,9 +3836,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3831,9 +3849,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3845,9 +3862,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3859,9 +3875,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3873,9 +3888,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3887,9 +3901,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3901,9 +3914,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3915,9 +3927,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3929,9 +3940,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3943,7 +3953,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3955,7 +3965,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3967,7 +3977,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3979,7 +3989,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3991,9 +4001,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4005,9 +4014,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4019,9 +4027,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4033,10 +4040,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4048,9 +4054,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4062,9 +4067,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4076,9 +4080,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4090,9 +4093,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4104,9 +4106,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.InstanceofToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4116,8 +4117,8 @@ expr_without_variable: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - $$.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $$.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($1, freefloating.Start, append((*$1.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$1.GetFreeFloating())[freefloating.Start]...)); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($1, freefloating.End, append((*$1.GetFreeFloating())[freefloating.End], (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]...)); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) } | new_expr { @@ -4130,27 +4131,25 @@ expr_without_variable: $$ = $2 // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) for _, n := range($4) { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = $$ $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.PropertyFetch: nn.Variable = $$ $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.MethodCall: nn.Variable = $$ $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) } // save position @@ -4167,10 +4166,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4182,10 +4180,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4203,8 +4200,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4216,8 +4213,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4229,8 +4226,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4242,8 +4239,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4255,8 +4252,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4268,8 +4265,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4281,35 +4278,29 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EXIT exit_expr { - var e *expr.Exit; - if $2 != nil { - e = $2.(*expr.Exit) - } else { - e = expr.NewExit(nil) - } - - $$ = e + e := $2.(*expr.Exit) + $$ = $2 if (strings.EqualFold($1.Value, "die")) { e.Die = true } // save position - if $2 == nil { + if $2.GetPosition() == nil { $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) } else { $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4321,7 +4312,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4351,7 +4342,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4363,7 +4354,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4375,7 +4366,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4387,14 +4378,21 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $9.FreeFloating) + + // normalize + if $6 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVars]); delete((*$$.GetFreeFloating()), freefloating.LexicalVars) } - $3.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4406,15 +4404,22 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $10)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.FunctionToken).AppendTo($$.GetMeta()) - if $3 != nil { - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Static, $2.FreeFloating) + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, $8.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $10.FreeFloating) + + // normalize + if $7 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVars]); delete((*$$.GetFreeFloating()), freefloating.LexicalVars) } - $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $10.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4429,7 +4434,7 @@ yield_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4441,7 +4446,7 @@ yield_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4453,8 +4458,8 @@ yield_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4466,8 +4471,8 @@ yield_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4482,12 +4487,9 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4499,12 +4501,9 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4518,11 +4517,9 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4534,12 +4531,9 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4554,9 +4548,9 @@ combined_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4568,8 +4562,8 @@ combined_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4597,9 +4591,9 @@ lexical_vars: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Use, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVarList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4617,9 +4611,9 @@ lexical_var_list: variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4636,10 +4630,10 @@ lexical_var_list: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4654,8 +4648,8 @@ lexical_var_list: variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4672,9 +4666,9 @@ lexical_var_list: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4691,7 +4685,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4705,8 +4699,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(funcName, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4720,7 +4714,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4732,8 +4726,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4745,8 +4739,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4758,8 +4752,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4771,8 +4765,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4782,7 +4776,9 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4797,7 +4793,7 @@ class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4809,7 +4805,7 @@ class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4821,8 +4817,8 @@ class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4834,7 +4830,7 @@ class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4849,7 +4845,7 @@ fully_qualified_class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4861,8 +4857,8 @@ fully_qualified_class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4874,7 +4870,7 @@ fully_qualified_class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4901,7 +4897,7 @@ dynamic_class_name_reference: $$ = $1 // save comments - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($3[0].GetMeta()) + yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) for _, n := range($3) { switch nn := n.(type) { @@ -4909,13 +4905,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) } } @@ -4925,13 +4921,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) } } @@ -4968,7 +4964,7 @@ dynamic_class_name_variable_property: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($2[0].GetMeta()) + yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4977,7 +4973,7 @@ dynamic_class_name_variable_property: exit_expr: /* empty */ { - $$ = nil + $$ = expr.NewExit(nil); yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4989,10 +4985,8 @@ exit_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) - $2.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Exit, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5010,8 +5004,8 @@ exit_expr: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) // save comments - $1.GetMeta().Cut(meta.TokenNameFilter(meta.OpenParenthesisToken)).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(meta.TokenNameFilter(meta.CloseParenthesisToken)).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Exit, (*$1.GetFreeFloating())[freefloating.OpenParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) } ; @@ -5024,7 +5018,11 @@ backticks_expr: } | T_ENCAPSED_AND_WHITESPACE { - $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value)} + part := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5060,7 +5058,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5072,7 +5070,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5084,7 +5082,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5096,7 +5094,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5108,7 +5106,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5120,7 +5118,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5132,7 +5130,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5144,7 +5142,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5156,7 +5154,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5168,11 +5166,11 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { encapsed := scalar.NewEncapsedStringPart($2.Value) $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) @@ -5182,7 +5180,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5194,7 +5192,7 @@ common_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5211,10 +5209,9 @@ static_class_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5252,7 +5249,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5266,8 +5263,8 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5281,7 +5278,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5293,9 +5290,9 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5307,8 +5304,8 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5326,7 +5323,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5347,12 +5344,9 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5364,9 +5358,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5378,9 +5371,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5392,9 +5384,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5406,9 +5397,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5420,9 +5410,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5434,9 +5423,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5448,7 +5436,7 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5460,7 +5448,7 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5472,9 +5460,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5486,9 +5473,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5500,9 +5486,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5514,9 +5499,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5528,9 +5512,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5542,9 +5525,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5556,9 +5538,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5570,9 +5551,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5584,9 +5564,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5598,9 +5577,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5612,9 +5590,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5626,9 +5603,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5640,9 +5616,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5654,9 +5629,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5668,10 +5642,9 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5683,9 +5656,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5697,9 +5669,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5711,9 +5682,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5725,9 +5695,8 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5739,10 +5708,9 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5754,10 +5722,9 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5769,7 +5736,7 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5781,7 +5748,7 @@ static_operation: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5790,10 +5757,8 @@ static_operation: $$ = $2 // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5816,7 +5781,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5824,12 +5789,14 @@ general_constant: { name := name.NewRelative($3) $$ = expr.NewConstFetch(name) + + // save position name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5843,7 +5810,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5860,8 +5827,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5891,7 +5857,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5903,7 +5869,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5915,7 +5881,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5934,7 +5900,7 @@ static_array_pair_list: // save comments if $2 != nil { - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5962,10 +5928,9 @@ non_empty_static_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5978,9 +5943,8 @@ non_empty_static_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - - $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5993,9 +5957,8 @@ non_empty_static_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6007,7 +5970,8 @@ non_empty_static_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6034,10 +5998,14 @@ parenthesis_expr: $$ = $2 // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) - $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.End, append((*$2.GetFreeFloating())[freefloating.End], (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + } + yylex.(*Parser).setFreeFloating($2, freefloating.OpenParenthesisToken, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($2, freefloating.CloseParenthesisToken, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6046,10 +6014,14 @@ parenthesis_expr: $$ = $2 // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) - $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + } + if len((*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.End, append((*$2.GetFreeFloating())[freefloating.End], (*$2.GetFreeFloating())[freefloating.CloseParenthesisToken]...)) + } + yylex.(*Parser).setFreeFloating($2, freefloating.OpenParenthesisToken, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($2, freefloating.CloseParenthesisToken, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6095,7 +6067,7 @@ variable: } // save comments - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($3[0].GetMeta()) + yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) for _, n := range($3) { switch nn := n.(type) { @@ -6103,19 +6075,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) } } @@ -6125,19 +6097,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn - nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) } } @@ -6178,7 +6150,7 @@ variable_property: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($2[0].GetMeta()) + yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6194,10 +6166,8 @@ array_method_dereference: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $4, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6210,10 +6180,8 @@ array_method_dereference: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $4, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6282,9 +6250,8 @@ static_member: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6296,9 +6263,8 @@ static_member: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6322,12 +6288,9 @@ array_function_dereference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6339,12 +6302,9 @@ array_function_dereference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6408,12 +6368,9 @@ reference_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6425,12 +6382,9 @@ reference_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenCurlyBracesToken) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6454,8 +6408,8 @@ compound_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6467,12 +6421,10 @@ compound_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.NodeStart) - $4.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6523,10 +6475,8 @@ object_dim_list: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $4, meta.CloseSquareBracket) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6539,10 +6489,8 @@ object_dim_list: fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $2, meta.OpenCurlyBracesToken) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(fetch.GetMeta()) - yylex.(*Parser).appendMetaToken(fetch, $4, meta.CloseCurlyBracesToken) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6567,7 +6515,7 @@ variable_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6579,10 +6527,8 @@ variable_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6598,8 +6544,8 @@ simple_indirect_reference: n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(n.GetMeta()) - yylex.(*Parser).appendMetaToken(n, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating(n, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6616,8 +6562,8 @@ simple_indirect_reference: n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(n.GetMeta()) - yylex.(*Parser).appendMetaToken(n, $2, meta.NodeStart) + yylex.(*Parser).setFreeFloating(n, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6633,7 +6579,7 @@ assignment_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6658,23 +6604,24 @@ assignment_list_element: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' assignment_list ')' { - item := expr.NewList($3) - $$ = expr.NewArrayItem(nil, item) + listNode := expr.NewList($3) + $$ = expr.NewArrayItem(nil, listNode) // save position - item.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(listNode)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6704,7 +6651,7 @@ array_pair_list: // save comments if $2 != nil { - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -6721,10 +6668,9 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6737,9 +6683,8 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - - $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6752,9 +6697,8 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6766,7 +6710,8 @@ non_empty_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6781,11 +6726,10 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $6)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - $5.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6800,8 +6744,8 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6816,10 +6760,9 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6834,7 +6777,7 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6856,7 +6799,7 @@ encaps_list: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6875,7 +6818,7 @@ encaps_list: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6892,8 +6835,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6909,11 +6852,9 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6931,9 +6872,9 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6947,9 +6888,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6965,10 +6905,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6984,13 +6922,10 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.OpenSquareBracket) - $5.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.CloseSquareBracket) - $6.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($5.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($5)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($6.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($6)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6999,9 +6934,8 @@ encaps_var: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7016,7 +6950,7 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7032,6 +6966,9 @@ encaps_var_offset: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_VARIABLE @@ -7044,8 +6981,8 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7060,9 +6997,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Isset, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7074,9 +7011,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7088,9 +7025,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7102,7 +7039,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7114,7 +7051,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7126,9 +7063,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Eval, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7140,7 +7077,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7152,7 +7089,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7170,7 +7107,7 @@ isset_variables: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7202,10 +7139,9 @@ class_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7219,10 +7155,9 @@ class_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7239,10 +7174,9 @@ static_class_name_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7259,10 +7193,9 @@ class_name_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/php5/php5_test.go b/php5/php5_test.go index b47bc17..dbf370f 100644 --- a/php5/php5_test.go +++ b/php5/php5_test.go @@ -2,37 +2,23 @@ package php5_test import ( "bytes" - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr/assign" "github.com/z7zmey/php-parser/node/expr/binary" "github.com/z7zmey/php-parser/node/expr/cast" "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/scalar" + "github.com/z7zmey/php-parser/node/stmt" "github.com/z7zmey/php-parser/php5" "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/node/stmt" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - - } -} - func TestPhp5(t *testing.T) { src := ` foo($a, ...$b); @@ -10872,6 +10858,12 @@ func TestPhp5(t *testing.T) { Parts: []node.Node{ &scalar.EncapsedStringPart{ Value: "cmd", + Position: &position.Position{ + StartLine: 229, + EndLine: 229, + StartPos: 4640, + EndPos: 4642, + }, }, }, }, @@ -18411,7 +18403,7 @@ func TestPhp5(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5Strings(t *testing.T) { @@ -18526,7 +18518,7 @@ func TestPhp5Strings(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5Heredoc(t *testing.T) { @@ -18707,7 +18699,7 @@ CAD; php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5ControlCharsErrors(t *testing.T) { @@ -18727,5 +18719,5 @@ func TestPhp5ControlCharsErrors(t *testing.T) { php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") php5parser.Parse() actual := php5parser.GetErrors() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/php7/parser.go b/php7/parser.go index 6ffd6b4..159b2eb 100644 --- a/php7/parser.go +++ b/php7/parser.go @@ -4,13 +4,11 @@ import ( "io" "strings" - "github.com/z7zmey/php-parser/position" - - "github.com/z7zmey/php-parser/meta" - "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/parser" + "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/scanner" ) @@ -106,121 +104,122 @@ func isDollar(r rune) bool { return r == '$' } -func newInheritMetaFilter() meta.Filter { - return meta.StopOnFailureFilter( - meta.AndFilter( - meta.TokenNameFilter(meta.NodeStart), - meta.OrFilter( - meta.TypeFilter(meta.CommentType, meta.WhiteSpaceType), - meta.ValueFilter("") - - if i < 0 { - SemiColonTokenMeta.AppendTo(prevNode.GetMeta()) - } else { - if metaTokenValue[0] == ';' { - prevNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[0:1], - Type: meta.TokenType, - Position: nil, - TokenName: meta.SemiColonToken, - }) - - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[1:i], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[i : i+2], - Type: meta.TokenType, - Position: nil, - TokenName: meta.NodeStart, - }) - - if len(metaTokenValue) > i+2 { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[i+2:], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - } - } else { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[:2], - Type: meta.TokenType, - Position: nil, - TokenName: meta.NodeStart, - }) - - if len(metaTokenValue) > 2 { - htmlNode.GetMeta().Push(&meta.Data{ - Value: metaTokenValue[2:], - Type: meta.WhiteSpaceType, - Position: nil, - TokenName: meta.NodeStart, - }) - } - } + dstCollection := dst.GetFreeFloating() + if *dstCollection == nil { + *dstCollection = make(freefloating.Collection) } + + (*dstCollection)[p] = strings +} + +func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []freefloating.String { + if l.Lexer.WithMeta == false { + return []freefloating.String{} + } + + return t.GetFreeFloatingToken() +} + +func (l *Parser) addDollarToken(v node.Node) { + if l.Lexer.WithMeta == false { + return + } + + l.setFreeFloating(v, freefloating.Dollar, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: "$", + Position: &position.Position{ + StartLine: v.GetPosition().StartLine, + EndLine: v.GetPosition().StartLine, + StartPos: v.GetPosition().StartPos, + EndPos: v.GetPosition().StartPos + 1, + }, + }, + }) +} + +func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + if l.Lexer.WithMeta == false { + return + } + + semiColon := (*prevNode.GetFreeFloating())[freefloating.SemiColon] + delete((*prevNode.GetFreeFloating()), freefloating.SemiColon) + if len(semiColon) == 0 { + return + } + + p := semiColon[0].Position + if semiColon[0].Value[0] == ';' { + l.setFreeFloating(prevNode, freefloating.SemiColon, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: ";", + Position: &position.Position{ + StartLine: p.StartLine, + EndLine: p.StartLine, + StartPos: p.StartPos, + EndPos: p.StartPos + 1, + }, + }, + }) + } + + vlen := len(semiColon[0].Value) + tlen := 2 + if strings.HasSuffix(semiColon[0].Value, "?>\n") { + tlen = 3 + } + + phpCloseTag := []freefloating.String{} + if vlen-tlen > 1 { + phpCloseTag = append(phpCloseTag, freefloating.String{ + StringType: freefloating.WhiteSpaceType, + Value: semiColon[0].Value[1 : vlen-tlen], + Position: &position.Position{ + StartLine: p.StartLine, + EndLine: p.EndLine, + StartPos: p.StartPos + 1, + EndPos: p.EndPos - tlen, + }, + }) + } + + phpCloseTag = append(phpCloseTag, freefloating.String{ + StringType: freefloating.WhiteSpaceType, + Value: semiColon[0].Value[vlen-tlen:], + Position: &position.Position{ + StartLine: p.EndLine, + EndLine: p.EndLine, + StartPos: p.EndPos - tlen, + EndPos: p.EndPos, + }, + }) + + l.setFreeFloating(htmlNode, freefloating.Start, append(phpCloseTag, (*htmlNode.GetFreeFloating())[freefloating.Start]...)) } func (p *Parser) returnTokenToPool(yyDollar []yySymType, yyVAL *yySymType) { diff --git a/php7/php7.go b/php7/php7.go index 8826f2a..b3c5ada 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -8,7 +8,7 @@ import ( "strconv" "strings" - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/expr/assign" @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5663 +//line php7/php7.y:5618 //line yacctab:1 var yyExca = [...]int{ @@ -2124,7 +2124,7 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) if yylex.(*Parser).currentToken.Value == "\xff" { - yylex.(*Parser).currentToken.Meta.SetTokenName(meta.NodeEnd).AppendTo(yylex.(*Parser).rootNode.GetMeta()) + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) } } case 2: @@ -2589,7 +2589,7 @@ yydefault: { if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if yyDollar[2].node != nil { @@ -2617,7 +2617,7 @@ yydefault: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2632,8 +2632,8 @@ yydefault: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2647,7 +2647,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) // save comments - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2661,8 +2661,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2676,7 +2676,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2739,11 +2739,11 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.HaltCompiller, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OpenParenthesisToken, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2761,15 +2761,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:508 + //line php7/php7.y:509 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2779,15 +2780,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:524 + //line php7/php7.y:526 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2795,15 +2797,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Namespace, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:538 + //line php7/php7.y:540 { yyVAL.node = yyDollar[2].node @@ -2811,15 +2813,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:552 + //line php7/php7.y:554 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2827,15 +2829,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:566 + //line php7/php7.y:568 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2843,15 +2845,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:580 + //line php7/php7.y:582 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2859,15 +2861,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseDeclarationList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:594 + //line php7/php7.y:596 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2875,15 +2877,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:611 + //line php7/php7.y:613 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2891,13 +2893,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:623 + //line php7/php7.y:625 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2905,13 +2907,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:638 + //line php7/php7.y:640 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2921,21 +2923,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yyDollar[3].token.FreeFloating) if yyDollar[5].token != nil { - yyDollar[5].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, append(yyDollar[5].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token), yyDollar[6].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[6].token.FreeFloating) } - yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:660 + //line php7/php7.y:661 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2945,16 +2946,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMetaToken(name, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.UseType, yyDollar[1].token.FreeFloating) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yyDollar[4].token.FreeFloating) if yyDollar[6].token != nil { - yyDollar[6].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, append(yyDollar[6].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token), yyDollar[7].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[7].token.FreeFloating) } - yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2970,21 +2970,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yyDollar[3].token.FreeFloating) if yyDollar[5].token != nil { - yyDollar[5].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, append(yyDollar[5].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token), yyDollar[6].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[6].token.FreeFloating) } - yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:708 + //line php7/php7.y:707 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2994,47 +2993,44 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMetaToken(name, yyDollar[1].token, meta.NodeStart) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Use, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yyDollar[4].token.FreeFloating) if yyDollar[6].token != nil { - yyDollar[6].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, append(yyDollar[6].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token), yyDollar[7].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[7].token.FreeFloating) } - yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:736 + //line php7/php7.y:732 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:740 + //line php7/php7.y:736 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:747 + //line php7/php7.y:743 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:756 + //line php7/php7.y:752 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3042,18 +3038,18 @@ yydefault: } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:765 + //line php7/php7.y:761 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:774 + //line php7/php7.y:770 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3061,18 +3057,18 @@ yydefault: } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:783 + //line php7/php7.y:779 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:792 + //line php7/php7.y:788 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3080,27 +3076,23 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:801 + //line php7/php7.y:797 { yyVAL.node = yyDollar[1].node - yyDollar[1].node.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:809 + //line php7/php7.y:803 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:820 + //line php7/php7.y:812 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3109,13 +3101,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:833 + //line php7/php7.y:826 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3127,50 +3120,52 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:855 + //line php7/php7.y:847 { yyVAL.node = yyDollar[1].node - yyDollar[1].node.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + // save coments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node.(*stmt.Use).Use, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:863 + //line php7/php7.y:856 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].node.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:877 + //line php7/php7.y:872 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:886 + //line php7/php7.y:881 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3178,11 +3173,11 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:895 + //line php7/php7.y:890 { if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if yyDollar[2].node != nil { @@ -3193,7 +3188,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:908 + //line php7/php7.y:903 { yyVAL.list = []node.Node{} @@ -3201,7 +3196,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:917 + //line php7/php7.y:912 { // error yyVAL.node = nil @@ -3210,7 +3205,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:924 + //line php7/php7.y:919 { yyVAL.node = yyDollar[1].node @@ -3218,7 +3213,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:930 + //line php7/php7.y:925 { yyVAL.node = yyDollar[1].node @@ -3226,7 +3221,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:936 + //line php7/php7.y:931 { yyVAL.node = yyDollar[1].node @@ -3234,7 +3229,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:942 + //line php7/php7.y:937 { yyVAL.node = yyDollar[1].node @@ -3242,7 +3237,7 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:948 + //line php7/php7.y:943 { yyVAL.node = yyDollar[1].node @@ -3250,7 +3245,7 @@ yydefault: } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:954 + //line php7/php7.y:949 { yyVAL.node = stmt.NewHaltCompiler() @@ -3258,17 +3253,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.HaltCompiller, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OpenParenthesisToken, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:972 + //line php7/php7.y:967 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3276,14 +3271,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:985 + //line php7/php7.y:980 { yyVAL.node = yyDollar[1].node @@ -3291,7 +3286,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:991 + //line php7/php7.y:986 { yyVAL.node = yyDollar[1].node @@ -3299,7 +3294,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:997 + //line php7/php7.y:992 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3314,15 +3309,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.While, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1018 + //line php7/php7.y:1013 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3330,18 +3325,18 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.WhileToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[7].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.While, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[7].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1035 + //line php7/php7.y:1030 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3360,17 +3355,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ForInitSemicolonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.ForCondSemicolonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.For, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.InitExpr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CondExpr, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.IncExpr, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1062 + //line php7/php7.y:1057 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3387,15 +3382,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Switch, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1085 + //line php7/php7.y:1080 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3403,15 +3398,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1099 + //line php7/php7.y:1094 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3419,15 +3414,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1113 + //line php7/php7.y:1108 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3435,15 +3430,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1127 + //line php7/php7.y:1122 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3451,15 +3446,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1141 + //line php7/php7.y:1136 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3467,15 +3462,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1155 + //line php7/php7.y:1150 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3483,16 +3478,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1170 + //line php7/php7.y:1165 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3500,13 +3495,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1182 + //line php7/php7.y:1177 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3514,16 +3509,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1197 + //line php7/php7.y:1191 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3531,21 +3525,21 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Unset, yyDollar[2].token.FreeFloating) if yyDollar[4].token != nil { - yyDollar[4].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, append(yyDollar[4].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token), yyDollar[5].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[5].token.FreeFloating) } - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.CloseParenthesisToken, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1217 + //line php7/php7.y:1211 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: @@ -3562,16 +3556,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[7].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Foreach, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[6].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1241 + //line php7/php7.y:1236 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: @@ -3590,17 +3584,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Foreach, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1268 + //line php7/php7.y:1263 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3609,15 +3603,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Declare, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ConstList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1283 + //line php7/php7.y:1278 { yyVAL.node = stmt.NewNop() @@ -3625,14 +3619,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1296 + //line php7/php7.y:1291 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3643,15 +3637,15 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Try, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1313 + //line php7/php7.y:1308 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3659,15 +3653,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1327 + //line php7/php7.y:1322 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3677,16 +3671,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Label, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1344 + //line php7/php7.y:1339 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3696,14 +3690,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Label, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1361 + //line php7/php7.y:1356 { yyVAL.list = []node.Node{} @@ -3711,7 +3705,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1367 + //line php7/php7.y:1362 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[5].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3724,19 +3718,19 @@ yydefault: catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(catch.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(catch.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(catch.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(catch.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(catch.GetMeta()) + yylex.(*Parser).setFreeFloating(catch, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Catch, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[5].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(catch, freefloating.Var, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Cond, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Stmts, yyDollar[9].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1392 + //line php7/php7.y:1387 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3744,18 +3738,18 @@ yydefault: } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1398 + //line php7/php7.y:1393 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1410 + //line php7/php7.y:1405 { yyVAL.node = nil @@ -3763,7 +3757,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1416 + //line php7/php7.y:1411 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3771,15 +3765,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Finally, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1433 + //line php7/php7.y:1428 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3787,18 +3781,18 @@ yydefault: } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1439 + //line php7/php7.y:1434 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1451 + //line php7/php7.y:1446 { yyVAL.node = yyDollar[1].node @@ -3806,7 +3800,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1460 + //line php7/php7.y:1455 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3816,45 +3810,57 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[3].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[3].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParamList, yyDollar[7].token.FreeFloating) + if yyDollar[8].node != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyDollar[8].node.GetFreeFloating())[freefloating.Colon]) + delete((*yyDollar[8].node.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ReturnType, yyDollar[9].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[11].token.FreeFloating) + + // normalize + if yyDollar[8].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.ReturnType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.ReturnType) } - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[11].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1486 + //line php7/php7.y:1491 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1490 + //line php7/php7.y:1495 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1497 + //line php7/php7.y:1502 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1501 + //line php7/php7.y:1506 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1508 + //line php7/php7.y:1513 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list, yyDollar[6].str) @@ -3864,18 +3870,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[7].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[9].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1527 + //line php7/php7.y:1531 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -3885,16 +3890,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1547 + //line php7/php7.y:1551 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3902,7 +3907,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1553 + //line php7/php7.y:1557 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3910,7 +3915,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1562 + //line php7/php7.y:1566 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3918,13 +3923,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1574 + //line php7/php7.y:1578 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3932,13 +3937,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1589 + //line php7/php7.y:1593 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3948,16 +3953,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[6].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1609 + //line php7/php7.y:1613 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3967,16 +3972,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[7].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1629 + //line php7/php7.y:1633 { yyVAL.ClassExtends = nil @@ -3984,7 +3989,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1635 + //line php7/php7.y:1639 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3992,13 +3997,13 @@ yydefault: yyVAL.ClassExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ExtendsToken).AppendTo(yyVAL.ClassExtends.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClassExtends, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1650 + //line php7/php7.y:1654 { yyVAL.InterfaceExtends = nil @@ -4006,7 +4011,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1656 + //line php7/php7.y:1660 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -4014,13 +4019,13 @@ yydefault: yyVAL.InterfaceExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ExtendsToken).AppendTo(yyVAL.InterfaceExtends.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.InterfaceExtends, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1671 + //line php7/php7.y:1675 { yyVAL.ClassImplements = nil @@ -4028,7 +4033,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1677 + //line php7/php7.y:1681 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -4036,13 +4041,13 @@ yydefault: yyVAL.ClassImplements.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ImplementsToken).AppendTo(yyVAL.ClassImplements.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClassImplements, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1692 + //line php7/php7.y:1696 { yyVAL.node = yyDollar[1].node @@ -4050,7 +4055,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1698 + //line php7/php7.y:1702 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -4058,13 +4063,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1710 + //line php7/php7.y:1714 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4072,30 +4077,30 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1724 + //line php7/php7.y:1728 { yyVAL.node = expr.NewShortList(yyDollar[2].list) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) + // save commentsc + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1740 + //line php7/php7.y:1744 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4106,7 +4111,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1749 + //line php7/php7.y:1753 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4116,16 +4121,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndforToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1769 + //line php7/php7.y:1773 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4136,7 +4141,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1778 + //line php7/php7.y:1782 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4146,16 +4151,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndforeachToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1798 + //line php7/php7.y:1802 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4166,7 +4171,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1807 + //line php7/php7.y:1811 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4176,16 +4181,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EnddeclareToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1827 + //line php7/php7.y:1831 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4195,14 +4200,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1842 + //line php7/php7.y:1846 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4212,16 +4217,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, yyDollar[2].token, meta.CaseSeparatorToken) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1859 + //line php7/php7.y:1862 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4231,16 +4235,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndswitchToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1876 + //line php7/php7.y:1879 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4251,18 +4255,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, yyDollar[2].token, meta.CaseSeparatorToken) - yyDollar[4].token.Meta.SetTokenName(meta.EndswitchToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1899 + //line php7/php7.y:1901 { yyVAL.list = []node.Node{} @@ -4270,7 +4273,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1905 + //line php7/php7.y:1907 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4279,15 +4282,15 @@ yydefault: _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_case.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_case.GetMeta()) - yylex.(*Parser).appendMetaToken(_case, yyDollar[4].token, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_case, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, append(yyDollar[4].token.FreeFloating)) + yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1920 + //line php7/php7.y:1922 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4296,27 +4299,27 @@ yydefault: _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_default.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_default.GetMeta()) - yylex.(*Parser).appendMetaToken(_default, yyDollar[3].token, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1938 + //line php7/php7.y:1940 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1942 + //line php7/php7.y:1944 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1949 + //line php7/php7.y:1951 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4327,7 +4330,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1958 + //line php7/php7.y:1960 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4337,16 +4340,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.EndwhileToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1978 + //line php7/php7.y:1980 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4354,15 +4357,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.If, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1992 + //line php7/php7.y:1994 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4372,15 +4375,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(_elseIf.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2011 + //line php7/php7.y:2013 { yyVAL.node = yyDollar[1].node @@ -4388,7 +4391,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2017 + //line php7/php7.y:2019 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4398,13 +4401,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_else.GetMeta()) + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2034 + //line php7/php7.y:2036 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4414,16 +4417,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[6].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.If, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:2051 + //line php7/php7.y:2053 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4434,16 +4437,16 @@ yydefault: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(_elseIf.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(_elseIf.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.ColonToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Cond, yyDollar[6].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2072 + //line php7/php7.y:2074 { yyVAL.node = yyDollar[1].node @@ -4451,15 +4454,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EndifToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2086 + //line php7/php7.y:2088 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4471,17 +4474,17 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_else.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(_else.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.EndifToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(_else, freefloating.Else, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[5].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AltEnd, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2109 + //line php7/php7.y:2111 { yyVAL.list = yyDollar[1].list @@ -4489,7 +4492,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2115 + //line php7/php7.y:2117 { yyVAL.list = nil @@ -4497,7 +4500,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2124 + //line php7/php7.y:2126 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4505,18 +4508,18 @@ yydefault: } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2130 + //line php7/php7.y:2132 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2142 + //line php7/php7.y:2144 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4537,26 +4540,36 @@ yydefault: // save comments if yyDollar[1].node != nil { - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) } if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) } if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) } - if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - } else { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Variadic, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + // normalize + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, (*yyVAL.node.GetFreeFloating())[freefloating.Variadic]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Variadic) + } + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, (*yyVAL.node.GetFreeFloating())[freefloating.Ampersand]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Ampersand) + } + if yyDollar[1].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, (*yyVAL.node.GetFreeFloating())[freefloating.OptionalType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2180 + //line php7/php7.y:2189 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4577,27 +4590,37 @@ yydefault: // save comments if yyDollar[1].node != nil { - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) } if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) } if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) } - if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - } else { - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Variadic, yyDollar[4].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[5].token.FreeFloating) + + // normalize + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, (*yyVAL.node.GetFreeFloating())[freefloating.Variadic]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Variadic) + } + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, (*yyVAL.node.GetFreeFloating())[freefloating.Ampersand]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Ampersand) + } + if yyDollar[1].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, (*yyVAL.node.GetFreeFloating())[freefloating.OptionalType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2222 + //line php7/php7.y:2238 { yyVAL.node = nil @@ -4605,7 +4628,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2228 + //line php7/php7.y:2244 { yyVAL.node = yyDollar[1].node @@ -4613,7 +4636,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2237 + //line php7/php7.y:2253 { yyVAL.node = yyDollar[1].node @@ -4621,7 +4644,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2243 + //line php7/php7.y:2259 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4629,13 +4652,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2258 + //line php7/php7.y:2274 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4643,13 +4666,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2270 + //line php7/php7.y:2286 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4657,13 +4680,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2282 + //line php7/php7.y:2298 { yyVAL.node = yyDollar[1].node @@ -4671,7 +4694,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2291 + //line php7/php7.y:2307 { yyVAL.node = nil @@ -4679,18 +4702,18 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2297 + //line php7/php7.y:2313 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Colon, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2309 + //line php7/php7.y:2325 { yyVAL.node = node.NewArgumentList(nil) @@ -4698,14 +4721,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2322 + //line php7/php7.y:2338 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4713,18 +4736,18 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, append(yyDollar[3].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token), yyDollar[4].token.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArgumentList, yyDollar[4].token.FreeFloating) } - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2342 + //line php7/php7.y:2358 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4732,18 +4755,18 @@ yydefault: } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2348 + //line php7/php7.y:2364 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2360 + //line php7/php7.y:2376 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4751,13 +4774,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) // save comments - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2372 + //line php7/php7.y:2388 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4765,24 +4788,24 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2387 + //line php7/php7.y:2403 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2396 + //line php7/php7.y:2412 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4790,7 +4813,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2405 + //line php7/php7.y:2421 { yyVAL.node = yyDollar[1].node @@ -4798,18 +4821,18 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2414 + //line php7/php7.y:2430 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2423 + //line php7/php7.y:2439 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4817,7 +4840,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2432 + //line php7/php7.y:2448 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4829,14 +4852,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2449 + //line php7/php7.y:2465 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4848,15 +4871,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2470 + //line php7/php7.y:2486 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4864,7 +4887,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2476 + //line php7/php7.y:2492 { yyVAL.list = []node.Node{} @@ -4872,7 +4895,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2485 + //line php7/php7.y:2501 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4880,16 +4903,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) // save comments - yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) - - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.PropertyList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2500 + //line php7/php7.y:2515 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4897,15 +4919,20 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ConstToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.SemiColonToken) + if len(yyDollar[1].list) > 0 { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[2].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ConstList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2516 + //line php7/php7.y:2534 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4913,13 +4940,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2528 + //line php7/php7.y:2546 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4933,23 +4960,30 @@ yydefault: } // save comments - yyDollar[2].token.Meta.SetTokenName(meta.FunctionToken).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - if len(yyDollar[1].list) > 0 { - yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ModifierList, yyDollar[2].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[2].token.FreeFloating) + } + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[4].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[4].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[8].token.FreeFloating) + if yyDollar[9].node != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyDollar[9].node.GetFreeFloating())[freefloating.Colon]) + delete((*yyDollar[9].node.GetFreeFloating()), freefloating.Colon) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2559 + //line php7/php7.y:2583 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4957,60 +4991,60 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2565 + //line php7/php7.y:2589 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2577 + //line php7/php7.y:2601 { yyVAL.node = stmt.NewNop() yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2590 + //line php7/php7.y:2614 { yyVAL.node = stmt.NewTraitAdaptationList(nil) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AdaptationList, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2602 + //line php7/php7.y:2626 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.AdaptationList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2617 + //line php7/php7.y:2641 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5018,7 +5052,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2623 + //line php7/php7.y:2647 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5026,31 +5060,31 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2632 + //line php7/php7.y:2656 { yyVAL.node = yyDollar[1].node // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.NameList, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2642 + //line php7/php7.y:2666 { yyVAL.node = yyDollar[1].node // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Alias, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2655 + //line php7/php7.y:2679 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5058,15 +5092,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.InsteadofToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2672 + //line php7/php7.y:2695 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5076,16 +5109,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2689 + //line php7/php7.y:2711 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5095,16 +5127,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2706 + //line php7/php7.y:2727 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5114,16 +5145,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2723 + //line php7/php7.y:2743 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5131,15 +5161,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ref, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2740 + //line php7/php7.y:2759 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5149,13 +5178,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2754 + //line php7/php7.y:2773 { yyVAL.node = yyDollar[1].node @@ -5163,7 +5192,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2763 + //line php7/php7.y:2782 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5173,16 +5202,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2783 + //line php7/php7.y:2801 { yyVAL.node = stmt.NewNop() @@ -5190,14 +5218,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2796 + //line php7/php7.y:2814 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5205,14 +5233,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2812 + //line php7/php7.y:2830 { yyVAL.list = yyDollar[1].list @@ -5220,7 +5248,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2818 + //line php7/php7.y:2836 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5229,13 +5257,13 @@ yydefault: modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(modifier.GetMeta()) + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2834 + //line php7/php7.y:2852 { yyVAL.list = nil @@ -5243,7 +5271,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2840 + //line php7/php7.y:2858 { yyVAL.list = yyDollar[1].list @@ -5251,7 +5279,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2849 + //line php7/php7.y:2867 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5259,7 +5287,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2855 + //line php7/php7.y:2873 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5267,7 +5295,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2864 + //line php7/php7.y:2882 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5275,13 +5303,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2876 + //line php7/php7.y:2894 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5289,13 +5317,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2888 + //line php7/php7.y:2906 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5303,13 +5331,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2900 + //line php7/php7.y:2918 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5317,13 +5345,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2912 + //line php7/php7.y:2930 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5331,13 +5359,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2924 + //line php7/php7.y:2942 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5345,24 +5373,24 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2939 + //line php7/php7.y:2957 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2948 + //line php7/php7.y:2966 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5370,7 +5398,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2957 + //line php7/php7.y:2975 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5382,14 +5410,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2974 + //line php7/php7.y:2992 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5401,49 +5429,32 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2995 + //line php7/php7.y:3013 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3004 + //line php7/php7.y:3022 { yyVAL.list = []node.Node{yyDollar[1].node} yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 283: - yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3013 - { - name := node.NewIdentifier(yyDollar[1].token.Value) - yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) - - // save position - name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) - - // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 284: yyDollar = yyS[yypt-4 : yypt+1] //line php7/php7.y:3031 { @@ -5455,25 +5466,42 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 284: + yyDollar = yyS[yypt-4 : yypt+1] + //line php7/php7.y:3049 + { + name := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3049 + //line php7/php7.y:3067 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3058 + //line php7/php7.y:3076 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5481,7 +5509,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3067 + //line php7/php7.y:3085 { yyVAL.node = yyDollar[1].node @@ -5489,7 +5517,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3076 + //line php7/php7.y:3094 { yyVAL.list = nil @@ -5497,7 +5525,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3082 + //line php7/php7.y:3100 { yyVAL.list = yyDollar[1].list @@ -5505,18 +5533,18 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3091 + //line php7/php7.y:3109 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3100 + //line php7/php7.y:3118 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5524,7 +5552,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3109 + //line php7/php7.y:3127 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5536,15 +5564,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[6].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[8].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3130 + //line php7/php7.y:3148 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5555,13 +5583,13 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3145 + //line php7/php7.y:3163 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5569,32 +5597,32 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3160 + //line php7/php7.y:3178 { - list := expr.NewList(yyDollar[3].list) - yyVAL.node = assign.NewAssign(list, yyDollar[6].node) + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = assign.NewAssign(listNode, yyDollar[6].node) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[5].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3177 + //line php7/php7.y:3195 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5604,15 +5632,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(shortList.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(shortList, freefloating.ArrayPairList, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3193 + //line php7/php7.y:3211 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5620,15 +5648,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3207 + //line php7/php7.y:3224 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5636,16 +5663,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3222 + //line php7/php7.y:3238 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5653,13 +5679,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3234 + //line php7/php7.y:3250 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5667,15 +5693,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PlusEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3248 + //line php7/php7.y:3263 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5683,15 +5708,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MinusEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3262 + //line php7/php7.y:3276 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5699,15 +5723,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MulEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3276 + //line php7/php7.y:3289 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5715,15 +5738,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PowEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3290 + //line php7/php7.y:3302 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5731,15 +5753,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DivEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3304 + //line php7/php7.y:3315 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5747,15 +5768,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3318 + //line php7/php7.y:3328 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5763,15 +5783,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ModEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3332 + //line php7/php7.y:3341 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5779,15 +5798,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AndEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3346 + //line php7/php7.y:3354 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5795,15 +5813,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3360 + //line php7/php7.y:3367 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5811,15 +5828,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.XorEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3374 + //line php7/php7.y:3380 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5827,15 +5843,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3388 + //line php7/php7.y:3393 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5843,15 +5858,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3402 + //line php7/php7.y:3406 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5859,15 +5873,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IncToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3416 + //line php7/php7.y:3419 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5875,13 +5888,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3428 + //line php7/php7.y:3431 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5889,15 +5902,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DecToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3442 + //line php7/php7.y:3444 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5905,13 +5917,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3454 + //line php7/php7.y:3456 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5919,15 +5931,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3468 + //line php7/php7.y:3469 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5935,9 +5946,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5951,15 +5961,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3496 + //line php7/php7.y:3495 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5967,15 +5976,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3510 + //line php7/php7.y:3508 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5983,15 +5991,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3524 + //line php7/php7.y:3521 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5999,15 +6006,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3538 + //line php7/php7.y:3534 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -6015,15 +6021,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3552 + //line php7/php7.y:3547 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6031,15 +6036,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3566 + //line php7/php7.y:3560 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6047,15 +6051,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3580 + //line php7/php7.y:3573 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6063,15 +6066,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3594 + //line php7/php7.y:3586 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6079,15 +6081,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3608 + //line php7/php7.y:3599 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6095,15 +6096,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3622 + //line php7/php7.y:3612 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6111,15 +6111,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3636 + //line php7/php7.y:3625 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6127,15 +6126,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3650 + //line php7/php7.y:3638 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6143,15 +6141,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3664 + //line php7/php7.y:3651 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6159,15 +6156,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3678 + //line php7/php7.y:3664 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6175,15 +6171,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3692 + //line php7/php7.y:3677 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6191,13 +6186,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3704 + //line php7/php7.y:3689 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6205,13 +6200,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3716 + //line php7/php7.y:3701 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6219,13 +6214,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3728 + //line php7/php7.y:3713 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6233,13 +6228,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3740 + //line php7/php7.y:3725 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6247,15 +6242,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3754 + //line php7/php7.y:3738 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6263,15 +6257,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3768 + //line php7/php7.y:3751 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6279,15 +6272,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3782 + //line php7/php7.y:3764 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6295,16 +6287,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3797 + //line php7/php7.y:3778 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6312,15 +6303,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3811 + //line php7/php7.y:3791 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6328,15 +6318,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3825 + //line php7/php7.y:3804 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6344,15 +6333,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3839 + //line php7/php7.y:3817 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6360,15 +6348,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3853 + //line php7/php7.y:3830 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6376,15 +6363,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SpaceshipToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3867 + //line php7/php7.y:3843 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6392,29 +6378,26 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.InstanceofToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3881 + //line php7/php7.y:3856 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3893 + //line php7/php7.y:3866 { yyVAL.node = yyDollar[1].node @@ -6422,7 +6405,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3899 + //line php7/php7.y:3872 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6430,16 +6413,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3914 + //line php7/php7.y:3886 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6447,16 +6429,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cond, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.True, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3929 + //line php7/php7.y:3900 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6464,15 +6445,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.CoalesceToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3943 + //line php7/php7.y:3913 { yyVAL.node = yyDollar[1].node @@ -6480,7 +6460,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3949 + //line php7/php7.y:3919 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6488,14 +6468,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3962 + //line php7/php7.y:3932 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6503,14 +6483,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3975 + //line php7/php7.y:3945 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6518,14 +6498,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3988 + //line php7/php7.y:3958 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6533,14 +6513,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4001 + //line php7/php7.y:3971 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6548,14 +6528,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4014 + //line php7/php7.y:3984 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6563,14 +6543,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4027 + //line php7/php7.y:3997 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6578,14 +6558,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4040 + //line php7/php7.y:4010 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6608,13 +6588,13 @@ yydefault: } // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4067 + //line php7/php7.y:4037 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6622,13 +6602,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4079 + //line php7/php7.y:4049 { yyVAL.node = yyDollar[1].node @@ -6636,7 +6616,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4085 + //line php7/php7.y:4055 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6644,13 +6624,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4097 + //line php7/php7.y:4067 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6658,13 +6638,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4109 + //line php7/php7.y:4079 { yyVAL.node = expr.NewYield(nil, nil) @@ -6672,13 +6652,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4121 + //line php7/php7.y:4091 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6686,13 +6666,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4133 + //line php7/php7.y:4103 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6700,14 +6680,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4146 + //line php7/php7.y:4116 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6715,13 +6695,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4158 + //line php7/php7.y:4128 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6729,20 +6709,36 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[2].token != nil { - yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if yyDollar[2].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[4].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[4].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[6].token.FreeFloating) + if yyDollar[8].node != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, (*yyDollar[8].node.GetFreeFloating())[freefloating.Colon]) + delete((*yyDollar[8].node.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ReturnType, yyDollar[9].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[11].token.FreeFloating) + + // normalize + if yyDollar[8].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, (*yyVAL.node.GetFreeFloating())[freefloating.ReturnType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.ReturnType) + } + if yyDollar[7].ClosureUse == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.LexicalVarList]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.LexicalVarList) } - yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[9].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[11].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4177 + //line php7/php7.y:4160 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6750,21 +6746,37 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[12].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.FunctionToken).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[3].token != nil { - yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Static, yyDollar[2].token.FreeFloating) + if yyDollar[3].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[5].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Function, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[5].token.FreeFloating) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ParameterList, yyDollar[7].token.FreeFloating) + if yyDollar[9].node != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, (*yyDollar[9].node.GetFreeFloating())[freefloating.Colon]) + delete((*yyDollar[9].node.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ReturnType, yyDollar[10].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Stmts, yyDollar[12].token.FreeFloating) + + // normalize + if yyDollar[9].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.LexicalVars, (*yyVAL.node.GetFreeFloating())[freefloating.ReturnType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.ReturnType) + } + if yyDollar[8].ClosureUse == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.LexicalVarList]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.LexicalVarList) } - yyDollar[5].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[7].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[10].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[12].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4200 + //line php7/php7.y:4196 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6773,19 +6785,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4210 + //line php7/php7.y:4206 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4214 + //line php7/php7.y:4210 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4221 + //line php7/php7.y:4217 { yyVAL.ClosureUse = nil @@ -6793,7 +6805,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4227 + //line php7/php7.y:4223 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6801,26 +6813,26 @@ yydefault: yyVAL.ClosureUse.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.ClosureUse.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.ClosureUse.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.ClosureUse.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.Use, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, freefloating.LexicalVarList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4244 + //line php7/php7.y:4240 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4253 + //line php7/php7.y:4249 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6828,7 +6840,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4262 + //line php7/php7.y:4258 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6838,14 +6850,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4277 + //line php7/php7.y:4273 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6857,15 +6869,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, yyDollar[2].token.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4298 + //line php7/php7.y:4294 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6873,13 +6885,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) // save comments - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4310 + //line php7/php7.y:4306 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6887,14 +6899,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4323 + //line php7/php7.y:4319 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6902,26 +6914,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4336 + //line php7/php7.y:4332 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4349 + //line php7/php7.y:4347 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6929,13 +6943,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4361 + //line php7/php7.y:4359 { yyVAL.node = yyDollar[1].node @@ -6943,7 +6957,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4370 + //line php7/php7.y:4368 { yyVAL.node = yyDollar[1].node @@ -6951,7 +6965,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4376 + //line php7/php7.y:4374 { yyVAL.node = yyDollar[1].node @@ -6959,7 +6973,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4385 + //line php7/php7.y:4383 { yyVAL.node = nil @@ -6967,7 +6981,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4391 + //line php7/php7.y:4389 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6975,16 +6989,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Exit, append(yyDollar[1].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4409 + //line php7/php7.y:4405 { yyVAL.list = []node.Node{} @@ -6992,9 +7004,13 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4415 + //line php7/php7.y:4411 { - yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} + part := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7032,9 +7048,9 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Array, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7048,8 +7064,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ArrayPairList, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7063,7 +7079,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7077,7 +7093,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7091,7 +7107,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7105,7 +7121,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7119,7 +7135,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7133,7 +7149,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7147,7 +7163,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7161,7 +7177,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7175,7 +7191,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7189,7 +7205,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7203,7 +7219,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7219,7 +7235,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7233,7 +7249,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7247,7 +7263,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7261,7 +7277,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7291,7 +7307,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) // save comments - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -7307,16 +7323,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4701 + //line php7/php7.y:4700 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7326,16 +7341,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4721 + //line php7/php7.y:4719 { yyVAL.node = yyDollar[1].node @@ -7343,7 +7357,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4727 + //line php7/php7.y:4725 { yyVAL.node = yyDollar[1].node @@ -7351,7 +7365,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4736 + //line php7/php7.y:4734 { yyVAL.node = nil @@ -7359,7 +7373,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4742 + //line php7/php7.y:4740 { yyVAL.node = yyDollar[1].node @@ -7367,7 +7381,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4751 + //line php7/php7.y:4749 { yyVAL.node = yyDollar[1].node @@ -7375,7 +7389,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4760 + //line php7/php7.y:4758 { yyVAL.node = yyDollar[1].node @@ -7383,21 +7397,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4766 + //line php7/php7.y:4764 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4778 + //line php7/php7.y:4774 { yyVAL.node = yyDollar[1].node @@ -7405,7 +7417,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4787 + //line php7/php7.y:4783 { yyVAL.node = yyDollar[1].node @@ -7413,21 +7425,19 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4793 + //line php7/php7.y:4789 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4805 + //line php7/php7.y:4799 { yyVAL.node = yyDollar[1].node @@ -7435,7 +7445,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4814 + //line php7/php7.y:4808 { yyVAL.node = yyDollar[1].node @@ -7443,7 +7453,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4820 + //line php7/php7.y:4814 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7451,18 +7461,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4837 + //line php7/php7.y:4828 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7470,18 +7477,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4854 + //line php7/php7.y:4842 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7489,18 +7493,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4871 + //line php7/php7.y:4856 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7508,15 +7509,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4885 + //line php7/php7.y:4869 { yyVAL.node = yyDollar[1].node @@ -7524,7 +7524,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4894 + //line php7/php7.y:4878 { yyVAL.node = yyDollar[1].node @@ -7532,7 +7532,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4900 + //line php7/php7.y:4884 { yyVAL.node = yyDollar[1].node @@ -7540,7 +7540,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4906 + //line php7/php7.y:4890 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7548,15 +7548,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4923 + //line php7/php7.y:4906 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7566,14 +7565,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4938 + //line php7/php7.y:4921 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7581,18 +7580,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.NodeStart) - yyDollar[4].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.Start, append(yyDollar[2].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token), (*yyDollar[3].node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyDollar[3].node, freefloating.End, append((*yyDollar[3].node.GetFreeFloating())[freefloating.End], append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4955 + //line php7/php7.y:4936 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7600,14 +7597,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4971 + //line php7/php7.y:4952 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7615,15 +7612,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4985 + //line php7/php7.y:4965 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7631,15 +7627,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Name, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5002 + //line php7/php7.y:4981 { yyVAL.node = yyDollar[1].node @@ -7647,7 +7642,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5008 + //line php7/php7.y:4987 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7655,18 +7650,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5025 + //line php7/php7.y:5001 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7674,18 +7666,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5042 + //line php7/php7.y:5015 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7693,15 +7682,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5056 + //line php7/php7.y:5028 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7709,15 +7697,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5070 + //line php7/php7.y:5041 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7725,15 +7712,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5087 + //line php7/php7.y:5057 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7741,27 +7727,25 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5099 + //line php7/php7.y:5069 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5111 + //line php7/php7.y:5079 { yyVAL.node = yyDollar[1].node @@ -7769,7 +7753,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5120 + //line php7/php7.y:5088 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7777,27 +7761,25 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5132 + //line php7/php7.y:5100 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, append(yyDollar[1].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token), (*yyVAL.node.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append((*yyVAL.node.GetFreeFloating())[freefloating.End], append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5144 + //line php7/php7.y:5110 { yyVAL.node = yyDollar[1].node @@ -7805,7 +7787,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5153 + //line php7/php7.y:5119 { yyVAL.list = yyDollar[1].list @@ -7813,7 +7795,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:5162 + //line php7/php7.y:5128 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7821,7 +7803,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5168 + //line php7/php7.y:5134 { yyVAL.node = yyDollar[1].node @@ -7829,7 +7811,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5177 + //line php7/php7.y:5143 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7838,13 +7820,13 @@ yydefault: yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5190 + //line php7/php7.y:5156 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7856,7 +7838,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5203 + //line php7/php7.y:5169 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7864,28 +7846,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5217 + //line php7/php7.y:5182 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5228 + //line php7/php7.y:5194 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7895,16 +7877,15 @@ yydefault: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5245 + //line php7/php7.y:5210 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7914,54 +7895,53 @@ yydefault: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5259 + //line php7/php7.y:5224 { // TODO: Cannot use list() as standalone expression - list := expr.NewList(yyDollar[5].list) - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list) + listNode := expr.NewList(yyDollar[5].list) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, listNode) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - - yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.Start, yyDollar[3].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, yyDollar[4].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, yyDollar[6].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5279 + //line php7/php7.y:5243 { // TODO: Cannot use list() as standalone expression - list := expr.NewList(yyDollar[3].list) - yyVAL.node = expr.NewArrayItem(nil, list) + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = expr.NewArrayItem(nil, listNode) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5299 + //line php7/php7.y:5263 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7969,7 +7949,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5305 + //line php7/php7.y:5269 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7978,13 +7958,13 @@ yydefault: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5318 + //line php7/php7.y:5282 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7992,7 +7972,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5324 + //line php7/php7.y:5288 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -8001,13 +7981,13 @@ yydefault: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5340 + //line php7/php7.y:5304 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8017,14 +7997,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5355 + //line php7/php7.y:5319 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8036,17 +8016,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[2].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[4].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5375 + //line php7/php7.y:5337 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8060,15 +8038,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, yyDollar[3].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5395 + //line php7/php7.y:5357 { variable := expr.NewVariable(yyDollar[2].node) @@ -8078,15 +8056,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5411 + //line php7/php7.y:5372 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -8098,16 +8075,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5430 + //line php7/php7.y:5389 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -8119,32 +8094,28 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.OpenSquareBracket) - yyDollar[5].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[5].token, meta.CloseSquareBracket) - yyDollar[6].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[6].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, append(yyDollar[5].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[5].token)...)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[6].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[6].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5452 + //line php7/php7.y:5408 { yyVAL.node = yyDollar[2].node // save comments - yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) - yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.End, append(yyDollar[3].token.FreeFloating, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5466 + //line php7/php7.y:5421 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -8152,13 +8123,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5478 + //line php7/php7.y:5433 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8171,13 +8142,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5495 + //line php7/php7.y:5450 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8199,13 +8170,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5521 + //line php7/php7.y:5476 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8215,14 +8186,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMeta(yyVAL.node, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).addDollarToken(yyVAL.node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5539 + //line php7/php7.y:5494 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8230,19 +8201,19 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - if yyDollar[4].token != nil { - yyDollar[4].token.Meta.SetTokenName(meta.CommaToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CommaToken) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Isset, yyDollar[2].token.FreeFloating) + if yyDollar[4].token == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, yyDollar[5].token.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.VarList, append(yyDollar[4].token.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token), yyDollar[5].token.FreeFloating...)...)) } - yyDollar[5].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5557 + //line php7/php7.y:5512 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8250,15 +8221,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Empty, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5571 + //line php7/php7.y:5526 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8266,13 +8237,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5583 + //line php7/php7.y:5538 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8280,13 +8251,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5595 + //line php7/php7.y:5550 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8294,15 +8265,15 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Eval, yyDollar[2].token.FreeFloating) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Expr, yyDollar[4].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5609 + //line php7/php7.y:5564 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8310,13 +8281,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5621 + //line php7/php7.y:5576 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8324,13 +8295,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5636 + //line php7/php7.y:5591 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8338,18 +8309,18 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5642 + //line php7/php7.y:5597 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5654 + //line php7/php7.y:5609 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index a87a408..3ff11c0 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -5,7 +5,7 @@ import ( "strings" "strconv" - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/scanner" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/scalar" @@ -306,7 +306,7 @@ start: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) if yylex.(*Parser).currentToken.Value == "\xff" { - yylex.(*Parser).currentToken.Meta.SetTokenName(meta.NodeEnd).AppendTo(yylex.(*Parser).rootNode.GetMeta()) + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) } } ; @@ -345,7 +345,7 @@ top_statement_list: { if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if $2 != nil { @@ -372,7 +372,7 @@ namespace_name: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -385,8 +385,8 @@ namespace_name: namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(namePart.GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -401,7 +401,7 @@ name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -413,8 +413,8 @@ name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -426,7 +426,7 @@ name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -478,11 +478,11 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -498,9 +498,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -514,9 +515,10 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -528,9 +530,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -542,9 +544,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -556,9 +558,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -570,9 +572,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -584,9 +586,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -598,9 +600,9 @@ top_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -615,7 +617,7 @@ use_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -627,7 +629,7 @@ use_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -644,15 +646,14 @@ group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) // save comments - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $3.FreeFloating) if $5 != nil { - $5.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($5.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($5), $6.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) } - $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -666,16 +667,15 @@ group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMetaToken(name, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) - $3.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.UseType, $1.FreeFloating) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $4.FreeFloating) if $6 != nil { - $6.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($6.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($6), $7.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) } - $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -692,15 +692,14 @@ mixed_group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) // save comments - $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $3.FreeFloating) if $5 != nil { - $5.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($5.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($5), $6.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) } - $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -714,18 +713,15 @@ mixed_group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - yylex.(*Parser).appendMetaToken(name, $1, meta.NodeStart) - $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) - $3.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Use, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $4.FreeFloating) if $6 != nil { - $6.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($6.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($6), $7.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) } - $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - - $2[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -748,7 +744,7 @@ inline_use_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -766,7 +762,7 @@ unprefixed_use_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -784,7 +780,7 @@ use_declarations: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -801,16 +797,12 @@ inline_use_declaration: { $$ = $1 - $1.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | use_type unprefixed_use_declaration { $$ = $2.(*stmt.Use).SetUseType($1) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -825,7 +817,8 @@ unprefixed_use_declaration: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], name) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -841,10 +834,9 @@ unprefixed_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -855,7 +847,8 @@ use_declaration: { $$ = $1 - $1.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + // save coments + yylex.(*Parser).MoveFreeFloating($1.(*stmt.Use).Use, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -864,9 +857,11 @@ use_declaration: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -878,7 +873,7 @@ const_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -895,7 +890,7 @@ inner_statement_list: { if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { prevNode := lastNode($1) - yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) } if $2 != nil { @@ -958,11 +953,11 @@ inner_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -976,8 +971,8 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1008,9 +1003,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.While, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1022,12 +1017,12 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.WhileToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $7, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.While, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($7)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1050,11 +1045,11 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.ForInitSemicolonToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.ForCondSemicolonToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.For, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.InitExpr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CondExpr, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.IncExpr, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1075,9 +1070,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Switch, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1089,9 +1084,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1103,9 +1098,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1117,9 +1112,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1131,9 +1126,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1145,9 +1140,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1159,10 +1154,10 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1174,7 +1169,7 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1186,10 +1181,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1201,15 +1195,15 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Unset, $2.FreeFloating) if $4 != nil { - $4.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, append($4.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($4), $5.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $5.FreeFloating) } - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($6)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1230,10 +1224,11 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $6.FreeFloating) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1256,11 +1251,11 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Key, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1273,9 +1268,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Declare, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1287,8 +1282,8 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1303,9 +1298,9 @@ statement: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Try, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1317,9 +1312,9 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1333,10 +1328,10 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1350,8 +1345,8 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1376,13 +1371,13 @@ catch_list: catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($2, $9)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(catch.GetMeta()) - $3.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(catch.GetMeta()) - $5.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(catch.GetMeta()) - $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(catch.GetMeta()) - $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(catch.GetMeta()) + yylex.(*Parser).setFreeFloating(catch, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Catch, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $5.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(catch, freefloating.Var, $6.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Cond, $7.FreeFloating) + yylex.(*Parser).setFreeFloating(catch, freefloating.Stmts, $9.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1399,7 +1394,7 @@ catch_name_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1420,9 +1415,9 @@ finally_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Finally, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1440,7 +1435,7 @@ unset_variables: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1467,15 +1462,25 @@ function_declaration_statement: // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ParamList, $7.FreeFloating) + if $8 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$8.GetFreeFloating())[freefloating.Colon]); delete((*$8.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ReturnType, $9.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $11.FreeFloating) + + // normalize + if $8 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.ReturnType]); delete((*$$.GetFreeFloating()), freefloating.ReturnType) } - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $5.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $9.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $11.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1514,12 +1519,11 @@ class_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $9)) // save comments - $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $7.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $9.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1533,10 +1537,10 @@ class_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1566,7 +1570,7 @@ class_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1578,7 +1582,7 @@ class_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1595,10 +1599,10 @@ trait_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1615,10 +1619,10 @@ interface_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $5.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1639,7 +1643,7 @@ extends_from: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ExtendsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1660,7 +1664,7 @@ interface_extends_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ExtendsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1681,7 +1685,7 @@ implements_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.ImplementsToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1702,7 +1706,7 @@ foreach_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1714,9 +1718,9 @@ foreach_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1727,9 +1731,9 @@ foreach_variable: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) + // save commentsc + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1755,10 +1759,10 @@ for_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndforToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1784,10 +1788,10 @@ foreach_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndforeachToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1813,10 +1817,10 @@ declare_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EnddeclareToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1833,8 +1837,8 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1848,10 +1852,9 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(caseList.GetMeta()) - $2.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, $2, meta.CaseSeparatorToken) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(caseList.GetMeta()) + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1865,10 +1868,10 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndswitchToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1883,12 +1886,11 @@ switch_case_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(caseList.GetMeta()) - yylex.(*Parser).appendMetaToken(caseList, $2, meta.CaseSeparatorToken) - $4.Meta.SetTokenName(meta.EndswitchToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1910,9 +1912,9 @@ case_list: _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_case.GetMeta()) - $4.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_case.GetMeta()) - yylex.(*Parser).appendMetaToken(_case, $4, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_case, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, append($4.FreeFloating)) + yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1925,9 +1927,9 @@ case_list: _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_default.GetMeta()) - $3.Meta.SetTokenName(meta.CaseSeparatorToken).AppendTo(_default.GetMeta()) - yylex.(*Parser).appendMetaToken(_default, $3, meta.CaseSeparatorToken) + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1964,10 +1966,10 @@ while_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.EndwhileToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1982,9 +1984,9 @@ if_stmt_without_else: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.If, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1998,9 +2000,9 @@ if_stmt_without_else: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - $3.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(_elseIf.GetMeta()) - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2023,7 +2025,7 @@ if_stmt: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_else.GetMeta()) + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2040,10 +2042,10 @@ alt_if_stmt_without_else: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $5.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.If, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2058,10 +2060,10 @@ alt_if_stmt_without_else: _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $7)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_elseIf.GetMeta()) - $3.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(_elseIf.GetMeta()) - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(_elseIf.GetMeta()) - $6.Meta.SetTokenName(meta.ColonToken).AppendTo(_elseIf.GetMeta()) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Expr, $5.FreeFloating) + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Cond, $6.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2076,9 +2078,9 @@ alt_if_stmt: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.EndifToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2094,11 +2096,11 @@ alt_if_stmt: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(_else.GetMeta()) - $3.Meta.SetTokenName(meta.ColonToken).AppendTo(_else.GetMeta()) - $5.Meta.SetTokenName(meta.EndifToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_else, freefloating.Else, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($6)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2131,7 +2133,7 @@ non_empty_parameter_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2159,20 +2161,27 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) } if $3 != nil { - $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) } - if $1 == nil && $2 == nil && $3 == nil { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - } else { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + // normalize + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + } + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + } + if $1 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2197,21 +2206,28 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) } if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) } if $3 != nil { - $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) } - if $1 == nil && $2 == nil && $3 == nil { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - } else { - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Variadic, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + + // normalize + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, (*$$.GetFreeFloating())[freefloating.Variadic]); delete((*$$.GetFreeFloating()), freefloating.Variadic) + } + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, (*$$.GetFreeFloating())[freefloating.Ampersand]); delete((*$$.GetFreeFloating()), freefloating.Ampersand) + } + if $1 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, (*$$.GetFreeFloating())[freefloating.OptionalType]); delete((*$$.GetFreeFloating()), freefloating.OptionalType) } - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2247,7 +2263,7 @@ type_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2262,7 +2278,7 @@ type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2274,7 +2290,7 @@ type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2298,7 +2314,7 @@ return_type: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Colon, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2313,8 +2329,8 @@ argument_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2326,12 +2342,12 @@ argument_list: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) if $3 != nil { - $3.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, append($3.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($3), $4.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $4.FreeFloating) } - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2349,7 +2365,7 @@ non_empty_argument_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2364,7 +2380,7 @@ argument: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) // save comments - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2376,7 +2392,7 @@ argument: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2388,7 +2404,7 @@ global_var_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2415,7 +2431,7 @@ static_var_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2440,8 +2456,8 @@ static_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2457,9 +2473,9 @@ static_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2489,10 +2505,9 @@ class_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) // save comments - $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) - - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2504,11 +2519,14 @@ class_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $4)) // save comments - $2.Meta.SetTokenName(meta.ConstToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) - - + if len($1) > 0 { + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $2.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2520,7 +2538,7 @@ class_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2538,16 +2556,22 @@ class_statement: } // save comments - $2.Meta.SetTokenName(meta.FunctionToken).AppendTo($$.GetMeta()) - if $3 != nil { - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $6.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - if len($1) > 0 { - $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $2.FreeFloating) + } + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $8.FreeFloating) + if $9 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$9.GetFreeFloating())[freefloating.Colon]); delete((*$9.GetFreeFloating()), freefloating.Colon) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2566,7 +2590,7 @@ name_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2580,8 +2604,8 @@ trait_adaptations: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2593,8 +2617,8 @@ trait_adaptations: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2605,8 +2629,8 @@ trait_adaptations: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2633,8 +2657,8 @@ trait_adaptation: $$ = $1; // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.NameList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2643,8 +2667,8 @@ trait_adaptation: $$ = $1; // save comments - $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Alias, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2659,9 +2683,8 @@ trait_precedence: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.InsteadofToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2678,10 +2701,9 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2695,10 +2717,9 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2712,10 +2733,9 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2727,9 +2747,8 @@ trait_alias: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2746,7 +2765,7 @@ trait_method_reference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2769,10 +2788,9 @@ absolute_trait_method_reference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2787,8 +2805,8 @@ method_body: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2800,8 +2818,8 @@ method_body: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2823,7 +2841,7 @@ variable_modifiers: modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(modifier.GetMeta()) + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2868,7 +2886,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2880,7 +2898,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2892,7 +2910,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2904,7 +2922,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2916,7 +2934,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2928,7 +2946,7 @@ member_modifier: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2940,7 +2958,7 @@ property_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2965,8 +2983,8 @@ property: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2982,9 +3000,9 @@ property: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2996,7 +3014,7 @@ class_const_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3019,8 +3037,8 @@ class_const_decl: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3037,8 +3055,8 @@ const_decl: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3050,7 +3068,7 @@ echo_expr_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3092,7 +3110,7 @@ non_empty_for_exprs: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3117,9 +3135,9 @@ anonymous_class: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $8.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3137,7 +3155,7 @@ new_expr: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3149,7 +3167,7 @@ new_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3158,18 +3176,18 @@ new_expr: expr_without_variable: T_LIST '(' array_pair_list ')' '=' expr { - list := expr.NewList($3) - $$ = assign.NewAssign(list, $6) + listNode := expr.NewList($3) + $$ = assign.NewAssign(listNode, $6) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3183,9 +3201,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(shortList.GetMeta()) - $4.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(shortList, freefloating.ArrayPairList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3197,9 +3215,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3211,10 +3228,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3226,7 +3242,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3238,9 +3254,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PlusEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3252,9 +3267,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MinusEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3266,9 +3280,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MulEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3280,9 +3293,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PowEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3294,9 +3306,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DivEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3308,9 +3319,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3322,9 +3332,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ModEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3336,9 +3345,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AndEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3350,9 +3358,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.OrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3364,9 +3371,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.XorEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3378,9 +3384,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3392,9 +3397,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3406,9 +3410,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.IncToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3420,7 +3423,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3432,9 +3435,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) // save comments - $2.Meta.SetTokenName(meta.DecToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3446,7 +3448,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3458,9 +3460,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3472,9 +3473,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3486,9 +3486,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3500,9 +3499,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3514,9 +3512,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3528,9 +3525,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3542,9 +3538,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3556,9 +3551,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3570,9 +3564,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3584,9 +3577,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3598,9 +3590,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3612,9 +3603,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3626,9 +3616,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3640,9 +3629,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3654,9 +3642,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3668,9 +3655,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3682,9 +3668,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3696,7 +3681,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3708,7 +3693,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3720,7 +3705,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3732,7 +3717,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3744,9 +3729,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3758,9 +3742,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3772,9 +3755,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3786,10 +3768,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3801,9 +3782,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3815,9 +3795,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3829,9 +3808,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3843,9 +3821,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3857,9 +3834,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.SpaceshipToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3871,9 +3847,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.InstanceofToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3882,10 +3857,8 @@ expr_without_variable: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3903,10 +3876,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3918,10 +3890,9 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3933,9 +3904,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.CoalesceToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3953,8 +3923,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3966,8 +3936,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3979,8 +3949,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3992,8 +3962,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4005,8 +3975,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4018,8 +3988,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4031,8 +4001,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4059,7 +4029,7 @@ expr_without_variable: } // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4071,7 +4041,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4089,7 +4059,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4101,7 +4071,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4113,7 +4083,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4125,7 +4095,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4137,8 +4107,8 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4150,7 +4120,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4162,14 +4132,27 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - if $2 != nil { - $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if $2 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $4.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $4.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $6.FreeFloating) + if $8 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, (*$8.GetFreeFloating())[freefloating.Colon]); delete((*$8.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ReturnType, $9.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $11.FreeFloating) + + // normalize + if $8 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, (*$$.GetFreeFloating())[freefloating.ReturnType]); delete((*$$.GetFreeFloating()), freefloating.ReturnType) + } + if $7 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVarList]); delete((*$$.GetFreeFloating()), freefloating.LexicalVarList) } - $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $9.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $11.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4181,15 +4164,28 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $12)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.FunctionToken).AppendTo($$.GetMeta()) - if $3 != nil { - $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Static, $2.FreeFloating) + if $3 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $5.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Function, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $5.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $7.FreeFloating) + if $9 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, (*$9.GetFreeFloating())[freefloating.Colon]); delete((*$9.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating($$, freefloating.ReturnType, $10.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $12.FreeFloating) + + // normalize + if $9 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVars, (*$$.GetFreeFloating())[freefloating.ReturnType]); delete((*$$.GetFreeFloating()), freefloating.ReturnType) + } + if $8 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.LexicalVarList]); delete((*$$.GetFreeFloating()), freefloating.LexicalVarList) } - $5.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $7.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - $10.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - $12.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4231,9 +4227,9 @@ lexical_vars: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Use, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVarList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4245,7 +4241,7 @@ lexical_var_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4268,8 +4264,8 @@ lexical_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4285,9 +4281,9 @@ lexical_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4302,7 +4298,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) // save comments - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4314,8 +4310,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4327,8 +4323,8 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4338,7 +4334,9 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4353,7 +4351,7 @@ class_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4395,10 +4393,8 @@ exit_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) - $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Exit, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4413,7 +4409,11 @@ backticks_expr: } | T_ENCAPSED_AND_WHITESPACE { - $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value)} + part := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4449,9 +4449,9 @@ dereferencable_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4463,8 +4463,8 @@ dereferencable_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4476,7 +4476,7 @@ dereferencable_scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4491,7 +4491,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4503,7 +4503,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4515,7 +4515,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4527,7 +4527,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4539,7 +4539,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4551,7 +4551,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4563,7 +4563,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4575,7 +4575,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4587,7 +4587,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4599,11 +4599,11 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { encapsed := scalar.NewEncapsedStringPart($2.Value) $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) @@ -4613,7 +4613,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4625,7 +4625,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4637,7 +4637,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4649,7 +4649,7 @@ scalar: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4676,7 +4676,7 @@ constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) // save comments - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4690,10 +4690,9 @@ constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4707,10 +4706,9 @@ constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4767,10 +4765,8 @@ dereferencable: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4794,10 +4790,8 @@ callable_expr: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4824,12 +4818,9 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) - $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4841,12 +4832,9 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) - $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4858,12 +4846,9 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - yylex.(*Parser).prependMetaToken($$, $2, meta.OpenCurlyBracesToken) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4875,9 +4860,8 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4910,9 +4894,8 @@ variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4929,8 +4912,8 @@ simple_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4942,12 +4925,10 @@ simple_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.NodeStart) - $4.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4959,8 +4940,8 @@ simple_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4975,9 +4956,8 @@ static_member: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4989,9 +4969,8 @@ static_member: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5012,12 +4991,9 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) - $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5029,12 +5005,9 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - yylex.(*Parser).prependMetaToken($$, $2, meta.OpenCurlyBracesToken) - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5046,9 +5019,8 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5060,9 +5032,8 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5074,9 +5045,8 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5091,7 +5061,7 @@ member_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5100,10 +5070,8 @@ member_name: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5124,7 +5092,7 @@ property_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5133,10 +5101,8 @@ property_name: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5182,7 +5148,7 @@ non_empty_array_pair_list: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5207,9 +5173,8 @@ array_pair: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5220,7 +5185,8 @@ array_pair: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5234,10 +5200,9 @@ array_pair: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5251,44 +5216,43 @@ array_pair: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression - list := expr.NewList($5) - $$ = expr.NewArrayItem($1, list) + listNode := expr.NewList($5) + $$ = expr.NewArrayItem($1, listNode) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) // save comments - $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) - $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) - - $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $6.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression - list := expr.NewList($3) - $$ = expr.NewArrayItem(nil, list) + listNode := expr.NewList($3) + $$ = expr.NewArrayItem(nil, listNode) // save position - list.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5310,7 +5274,7 @@ encaps_list: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) // save comments - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5329,7 +5293,7 @@ encaps_list: encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(encapsed.GetMeta()) + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5346,8 +5310,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5363,11 +5327,9 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) - $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5385,9 +5347,9 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) - $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, $3.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5401,9 +5363,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5419,10 +5380,8 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5438,13 +5397,10 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.OpenSquareBracket) - $5.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $5, meta.CloseSquareBracket) - $6.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $6, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($5.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($5)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($6.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($6)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5453,9 +5409,8 @@ encaps_var: $$ = $2; // save comments - yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) - $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5470,7 +5425,7 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5487,7 +5442,7 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5513,7 +5468,7 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5527,8 +5482,8 @@ encaps_var_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMeta($$, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5543,13 +5498,13 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - if $4 != nil { - $4.Meta.SetTokenName(meta.CommaToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CommaToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Isset, $2.FreeFloating) + if $4 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $5.FreeFloating) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, append($4.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($4), $5.FreeFloating...)...)) } - $5.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5561,9 +5516,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5575,7 +5530,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5587,7 +5542,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5599,9 +5554,9 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Eval, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5613,7 +5568,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5625,7 +5580,7 @@ internal_functions_in_yacc: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5643,7 +5598,7 @@ isset_variables: $$ = append($1, $3) // save comments - $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/php7/php7_test.go b/php7/php7_test.go index 57110e7..df49ce0 100644 --- a/php7/php7_test.go +++ b/php7/php7_test.go @@ -2,10 +2,10 @@ package php7_test import ( "bytes" - "reflect" "testing" - "github.com/kylelemons/godebug/pretty" + "gotest.tools/assert" + "github.com/z7zmey/php-parser/errors" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/expr" @@ -19,19 +19,6 @@ import ( "github.com/z7zmey/php-parser/position" ) -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - diff := pretty.Compare(expected, actual) - - if diff != "" { - t.Errorf("diff: (-expected +actual)\n%s", diff) - } else { - t.Errorf("expected and actual are not equal\n") - } - - } -} - func TestPhp7(t *testing.T) { src := ` foo($a, ...$b); @@ -11017,6 +11004,12 @@ func TestPhp7(t *testing.T) { }, Parts: []node.Node{ &scalar.EncapsedStringPart{ + Position: &position.Position{ + StartLine: 235, + EndLine: 235, + StartPos: 4728, + EndPos: 4730, + }, Value: "cmd", }, }, @@ -16135,7 +16128,7 @@ func TestPhp7(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5Strings(t *testing.T) { @@ -16250,7 +16243,7 @@ func TestPhp5Strings(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp5Heredoc(t *testing.T) { @@ -16431,7 +16424,7 @@ CAD; php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetRootNode() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } func TestPhp7ControlCharsErrors(t *testing.T) { @@ -16451,5 +16444,5 @@ func TestPhp7ControlCharsErrors(t *testing.T) { php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") php7parser.Parse() actual := php7parser.GetErrors() - assertEqual(t, expected, actual) + assert.DeepEqual(t, expected, actual) } diff --git a/printer/printer.go b/printer/printer.go index e90a3b4..1a7fc82 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -4,7 +4,7 @@ import ( "io" "strings" - "github.com/z7zmey/php-parser/meta" + "github.com/z7zmey/php-parser/freefloating" "github.com/z7zmey/php-parser/node/stmt" @@ -45,12 +45,8 @@ func (p *Printer) Print(n node.Node) { _, isInlineHtml := n.(*stmt.InlineHtml) _, isEcho := n.(*stmt.Echo) if p.s == HtmlState && !isInlineHtml && !isRoot && !isEcho { - if len((*n.GetMeta())) == 0 { - io.WriteString(p.w, " 0 { - io.WriteString(p.w, "\\") - } + p.joinPrint("\\", nn.Parts) - p.Print(part) - } - - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printNameFullyQualified(n node.Node) { nn := n.(*name.FullyQualified) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) - for _, part := range nn.Parts { - io.WriteString(p.w, "\\") - p.Print(part) - } + io.WriteString(p.w, "\\") + p.joinPrint("\\", nn.Parts) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printNameRelative(n node.Node) { nn := n.(*name.Relative) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) + io.WriteString(p.w, "namespace") - p.printMeta(nn, meta.NsSeparatorToken) + p.printFreeFloating(nn, freefloating.Namespace) for _, part := range nn.Parts { io.WriteString(p.w, "\\") p.Print(part) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // scalar func (p *Printer) printScalarLNumber(n node.Node) { nn := n.(*scalar.Lnumber) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarDNumber(n node.Node) { nn := n.(*scalar.Dnumber) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarString(n node.Node) { nn := n.(*scalar.String) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarEncapsedStringPart(n node.Node) { nn := n.(*scalar.EncapsedStringPart) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarEncapsed(n node.Node) { nn := n.(*scalar.Encapsed) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "\"") for _, part := range nn.Parts { switch part.(type) { case *expr.ArrayDimFetch: - if len(part.GetMeta().FindBy(meta.ValueFilter("${"))) == 1 { + s := (*part.GetFreeFloating())[freefloating.Start] + if len(s) > 0 && s[0].Value == "${" { p.printExprArrayDimFetchWithoutLeadingDollar(part) } else { p.Print(part) } case *expr.Variable: - if len(part.GetMeta().FindBy(meta.ValueFilter("${"))) == 1 { + s := (*part.GetFreeFloating())[freefloating.Start] + if len(s) > 0 && s[0].Value == "${" { p.printExprVariableWithoutLeadingDollar(part) } else { p.Print(part) @@ -628,12 +611,12 @@ func (p *Printer) printScalarEncapsed(n node.Node) { } io.WriteString(p.w, "\"") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarHeredoc(n node.Node) { nn := n.(*scalar.Heredoc) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "<<<") io.WriteString(p.w, nn.Label) @@ -642,13 +625,15 @@ func (p *Printer) printScalarHeredoc(n node.Node) { for _, part := range nn.Parts { switch part.(type) { case *expr.ArrayDimFetch: - if len(part.GetMeta().FindBy(meta.ValueFilter("${"))) == 1 { + s := (*part.GetFreeFloating())[freefloating.Start] + if len(s) > 0 && s[0].Value == "${" { p.printExprArrayDimFetchWithoutLeadingDollar(part) } else { p.Print(part) } case *expr.Variable: - if len(part.GetMeta().FindBy(meta.ValueFilter("${"))) == 1 { + s := (*part.GetFreeFloating())[freefloating.Start] + if len(s) > 0 && s[0].Value == "${" { p.printExprVariableWithoutLeadingDollar(part) } else { p.Print(part) @@ -661,1337 +646,1360 @@ func (p *Printer) printScalarHeredoc(n node.Node) { io.WriteString(p.w, "\n") io.WriteString(p.w, strings.Trim(nn.Label, "\"'")) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printScalarMagicConstant(n node.Node) { nn := n.(*scalar.MagicConstant) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // Assign func (p *Printer) printAssign(n node.Node) { nn := n.(*assign.Assign) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.EqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignReference(n node.Node) { nn := n.(*assign.Reference) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.EqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "=") - p.printMeta(nn, meta.AmpersandToken) + p.printFreeFloating(nn, freefloating.Equal) io.WriteString(p.w, "&") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignBitwiseAnd(n node.Node) { nn := n.(*assign.BitwiseAnd) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.AndEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "&") io.WriteString(p.w, "=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignBitwiseOr(n node.Node) { nn := n.(*assign.BitwiseOr) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.OrEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "|=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignBitwiseXor(n node.Node) { nn := n.(*assign.BitwiseXor) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.XorEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "^=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignConcat(n node.Node) { nn := n.(*assign.Concat) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.ConcatEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, ".=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignDiv(n node.Node) { nn := n.(*assign.Div) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.DivEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "/=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignMinus(n node.Node) { nn := n.(*assign.Minus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.MinusEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "-=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignMod(n node.Node) { nn := n.(*assign.Mod) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.ModEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "%=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignMul(n node.Node) { nn := n.(*assign.Mul) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.MulEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "*=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignPlus(n node.Node) { nn := n.(*assign.Plus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.PlusEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "+=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignPow(n node.Node) { nn := n.(*assign.Pow) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.PowEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "**=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignShiftLeft(n node.Node) { nn := n.(*assign.ShiftLeft) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.SlEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "<<=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printAssignShiftRight(n node.Node) { nn := n.(*assign.ShiftRight) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.SrEqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, ">>=") p.Print(nn.Expression) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // binary func (p *Printer) printBinaryBitwiseAnd(n node.Node) { nn := n.(*binary.BitwiseAnd) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.AmpersandToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "&") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryBitwiseOr(n node.Node) { nn := n.(*binary.BitwiseOr) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.VerticalBarToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "|") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryBitwiseXor(n node.Node) { nn := n.(*binary.BitwiseXor) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.CaretToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "^") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryBooleanAnd(n node.Node) { nn := n.(*binary.BooleanAnd) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.BooleanAndToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "&&") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryBooleanOr(n node.Node) { nn := n.(*binary.BooleanOr) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.BooleanOrToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "||") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryCoalesce(n node.Node) { nn := n.(*binary.Coalesce) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.CoalesceToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "??") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryConcat(n node.Node) { nn := n.(*binary.Concat) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.DotToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ".") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryDiv(n node.Node) { nn := n.(*binary.Div) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.SlashToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "/") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryEqual(n node.Node) { nn := n.(*binary.Equal) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.IsEqualToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "==") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryGreaterOrEqual(n node.Node) { nn := n.(*binary.GreaterOrEqual) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.IsGreaterOrEqualToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ">=") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryGreater(n node.Node) { nn := n.(*binary.Greater) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.GreaterToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ">") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryIdentical(n node.Node) { nn := n.(*binary.Identical) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.IsIdenticalToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "===") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryLogicalAnd(n node.Node) { nn := n.(*binary.LogicalAnd) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.LogicalAndToken) io.WriteString(p.w, "and") - if len((*nn.Right.GetMeta())) == 0 { + if nn.Right.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryLogicalOr(n node.Node) { nn := n.(*binary.LogicalOr) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.LogicalOrToken) io.WriteString(p.w, "or") - if len((*nn.Right.GetMeta())) == 0 { + if nn.Right.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryLogicalXor(n node.Node) { nn := n.(*binary.LogicalXor) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.LogicalXorToken) io.WriteString(p.w, "xor") - if len((*nn.Right.GetMeta())) == 0 { + if nn.Right.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryMinus(n node.Node) { nn := n.(*binary.Minus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.MinusToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "-") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryMod(n node.Node) { nn := n.(*binary.Mod) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.PercentToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "%") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryMul(n node.Node) { nn := n.(*binary.Mul) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.AsteriskToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "*") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryNotEqual(n node.Node) { nn := n.(*binary.NotEqual) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + p.printFreeFloating(nn, freefloating.Equal) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "!=") } - p.printMeta(nn, meta.IsNotEqualToken) p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryNotIdentical(n node.Node) { nn := n.(*binary.NotIdentical) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.IsNotIdenticalToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "!==") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryPlus(n node.Node) { nn := n.(*binary.Plus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.PlusToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "+") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryPow(n node.Node) { nn := n.(*binary.Pow) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.PowToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "**") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryShiftLeft(n node.Node) { nn := n.(*binary.ShiftLeft) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.SlToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "<<") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinaryShiftRight(n node.Node) { nn := n.(*binary.ShiftRight) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.SrToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ">>") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinarySmallerOrEqual(n node.Node) { nn := n.(*binary.SmallerOrEqual) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.IsSmallerOrEqualToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "<=") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinarySmaller(n node.Node) { nn := n.(*binary.Smaller) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.LessToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "<") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBinarySpaceship(n node.Node) { nn := n.(*binary.Spaceship) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Left) - p.printMeta(nn, meta.SpaceshipToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "<=>") p.Print(nn.Right) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // cast func (p *Printer) printArray(n node.Node) { nn := n.(*cast.Array) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(array)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printBool(n node.Node) { nn := n.(*cast.Bool) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(boolean)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printDouble(n node.Node) { nn := n.(*cast.Double) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(float)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printInt(n node.Node) { nn := n.(*cast.Int) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(integer)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printObject(n node.Node) { nn := n.(*cast.Object) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(object)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printString(n node.Node) { nn := n.(*cast.String) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(string)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printUnset(n node.Node) { nn := n.(*cast.Unset) - p.printMeta(nn, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Start) + + p.printFreeFloating(nn, freefloating.Cast) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "(unset)") } + p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // expr func (p *Printer) printExprArrayDimFetch(n node.Node) { nn := n.(*expr.ArrayDimFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.OpenSquareBracket) - p.printMeta(nn, meta.OpenCurlyBracesToken) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Var) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "[") } p.Print(nn.Dim) - p.printMeta(nn, meta.CloseSquareBracket) - p.printMeta(nn, meta.CloseCurlyBracesToken) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "]") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprArrayDimFetchWithoutLeadingDollar(n node.Node) { nn := n.(*expr.ArrayDimFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.printExprVariableWithoutLeadingDollar(nn.Variable) - p.printMeta(nn, meta.OpenSquareBracket) - p.printMeta(nn, meta.OpenCurlyBracesToken) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Var) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "[") } p.Print(nn.Dim) - p.printMeta(nn, meta.CloseSquareBracket) - p.printMeta(nn, meta.CloseCurlyBracesToken) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "]") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprArrayItem(n node.Node) { nn := n.(*expr.ArrayItem) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Key != nil { p.Print(nn.Key) - p.printMeta(nn, meta.DoubleArrowToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "=>") } p.Print(nn.Val) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprArray(n node.Node) { nn := n.(*expr.Array) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "array") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Array) io.WriteString(p.w, "(") p.joinPrint(",", nn.Items) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ArrayPairList) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprBitwiseNot(n node.Node) { nn := n.(*expr.BitwiseNot) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "~") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprBooleanNot(n node.Node) { nn := n.(*expr.BooleanNot) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "!") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprClassConstFetch(n node.Node) { nn := n.(*expr.ClassConstFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Class) - p.printMeta(nn, meta.PaamayimNekudotayimToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "::") p.Print(nn.ConstantName) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprClone(n node.Node) { nn := n.(*expr.Clone) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "clone") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprClosureUse(n node.Node) { nn := n.(*expr.ClosureUse) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "use") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Use) io.WriteString(p.w, "(") p.joinPrint(",", nn.Uses) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.LexicalVarList) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprClosure(n node.Node) { nn := n.(*expr.Closure) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Static { io.WriteString(p.w, "static") } - - if nn.Static && len(n.GetMeta().FindBy(meta.TypeFilter(meta.WhiteSpaceType))) == 0 { + p.printFreeFloating(nn, freefloating.Static) + if nn.Static && n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.FunctionToken) io.WriteString(p.w, "function") + p.printFreeFloating(nn, freefloating.Function) if nn.ReturnsRef { - p.printMeta(nn, meta.AmpersandToken) io.WriteString(p.w, "&") } + p.printFreeFloating(nn, freefloating.Ampersand) - p.printMeta(nn, meta.OpenParenthesisToken) io.WriteString(p.w, "(") p.joinPrint(",", nn.Params) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ParameterList) io.WriteString(p.w, ")") + p.printFreeFloating(nn, freefloating.Params) if nn.ClosureUse != nil { p.Print(nn.ClosureUse) } + p.printFreeFloating(nn, freefloating.LexicalVars) if nn.ReturnType != nil { - p.printMeta(nn.ReturnType, meta.ColonToken) io.WriteString(p.w, ":") p.Print(nn.ReturnType) } + p.printFreeFloating(nn, freefloating.ReturnType) - p.printMeta(nn, meta.OpenCurlyBracesToken) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprConstFetch(n node.Node) { nn := n.(*expr.ConstFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Constant) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprEmpty(n node.Node) { nn := n.(*expr.Empty) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "empty") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Empty) io.WriteString(p.w, "(") p.Print(nn.Expr) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprErrorSuppress(n node.Node) { nn := n.(*expr.ErrorSuppress) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "@") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprEval(n node.Node) { nn := n.(*expr.Eval) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "eval") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Eval) io.WriteString(p.w, "(") p.Print(nn.Expr) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprExit(n node.Node) { nn := n.(*expr.Exit) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Die { io.WriteString(p.w, "die") } else { io.WriteString(p.w, "exit") } + p.printFreeFloating(nn, freefloating.Exit) - p.printMeta(nn, meta.OpenParenthesisToken) - if len((*nn.GetMeta())) == 0 && nn.Expr != nil && len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr != nil && nn.Expr.GetFreeFloating().IsEmpty() && nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprFunctionCall(n node.Node) { nn := n.(*expr.FunctionCall) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Function) - p.printMeta(nn.ArgumentList, meta.OpenParenthesisToken) + + p.printFreeFloating(nn.ArgumentList, freefloating.Start) io.WriteString(p.w, "(") p.joinPrint(",", nn.ArgumentList.Arguments) - p.printMeta(nn.ArgumentList, meta.CommaToken) - p.printMeta(nn.ArgumentList, meta.CloseParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList) io.WriteString(p.w, ")") + p.printFreeFloating(nn.ArgumentList, freefloating.End) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprInclude(n node.Node) { nn := n.(*expr.Include) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "include") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprIncludeOnce(n node.Node) { nn := n.(*expr.IncludeOnce) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "include_once") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprInstanceOf(n node.Node) { nn := n.(*expr.InstanceOf) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Expr) - p.printMeta(nn, meta.InstanceofToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } + io.WriteString(p.w, "instanceof") - if len((*nn.Class.GetMeta())) == 0 { + + if nn.Class.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Class) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprIsset(n node.Node) { nn := n.(*expr.Isset) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "isset") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Isset) io.WriteString(p.w, "(") p.joinPrint(",", nn.Variables) - p.printMeta(nn, meta.CommaToken) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.VarList) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprList(n node.Node) { nn := n.(*expr.List) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "list") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.List) io.WriteString(p.w, "(") p.joinPrint(",", nn.Items) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ArrayPairList) io.WriteString(p.w, ")") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprMethodCall(n node.Node) { nn := n.(*expr.MethodCall) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.ObjectOperatorToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "->") p.Print(nn.Method) - p.printMeta(nn.ArgumentList, meta.OpenParenthesisToken) + + p.printFreeFloating(nn.ArgumentList, freefloating.Start) io.WriteString(p.w, "(") p.joinPrint(",", nn.ArgumentList.Arguments) - p.printMeta(nn.ArgumentList, meta.CommaToken) - p.printMeta(nn.ArgumentList, meta.CloseParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList) io.WriteString(p.w, ")") + p.printFreeFloating(nn.ArgumentList, freefloating.End) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprNew(n node.Node) { nn := n.(*expr.New) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "new") - if len((*nn.Class.GetMeta())) == 0 { + if nn.Class.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Class) if nn.ArgumentList != nil { - p.printMeta(nn.ArgumentList, meta.OpenParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.Start) io.WriteString(p.w, "(") p.joinPrint(",", nn.ArgumentList.Arguments) - p.printMeta(nn.ArgumentList, meta.CommaToken) - p.printMeta(nn.ArgumentList, meta.CloseParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList) io.WriteString(p.w, ")") + p.printFreeFloating(nn.ArgumentList, freefloating.End) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPostDec(n node.Node) { nn := n.(*expr.PostDec) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.DecToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "--") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPostInc(n node.Node) { nn := n.(*expr.PostInc) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.IncToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "++") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPreDec(n node.Node) { nn := n.(*expr.PreDec) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "--") p.Print(nn.Variable) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPreInc(n node.Node) { nn := n.(*expr.PreInc) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "++") p.Print(nn.Variable) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPrint(n node.Node) { nn := n.(*expr.Print) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "print") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprPropertyFetch(n node.Node) { nn := n.(*expr.PropertyFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) - p.printMeta(nn, meta.ObjectOperatorToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "->") p.Print(nn.Property) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprReference(n node.Node) { nn := n.(*expr.Reference) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "&") p.Print(nn.Variable) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprRequire(n node.Node) { nn := n.(*expr.Require) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "require") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprRequireOnce(n node.Node) { nn := n.(*expr.RequireOnce) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "require_once") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprShellExec(n node.Node) { nn := n.(*expr.ShellExec) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "`") - for _, part := range nn.Parts { - p.Print(part) - } + p.joinPrint("", nn.Parts) io.WriteString(p.w, "`") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprShortArray(n node.Node) { nn := n.(*expr.ShortArray) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "[") p.joinPrint(",", nn.Items) - p.printMeta(nn, meta.CloseSquareBracket) + p.printFreeFloating(nn, freefloating.ArrayPairList) io.WriteString(p.w, "]") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprShortList(n node.Node) { nn := n.(*expr.ShortList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "[") p.joinPrint(",", nn.Items) - p.printMeta(nn, meta.CloseSquareBracket) + p.printFreeFloating(nn, freefloating.ArrayPairList) io.WriteString(p.w, "]") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprStaticCall(n node.Node) { nn := n.(*expr.StaticCall) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Class) - p.printMeta(nn, meta.PaamayimNekudotayimToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "::") p.Print(nn.Call) - p.printMeta(nn.ArgumentList, meta.OpenParenthesisToken) + + p.printFreeFloating(nn.ArgumentList, freefloating.Start) io.WriteString(p.w, "(") p.joinPrint(",", nn.ArgumentList.Arguments) - p.printMeta(nn.ArgumentList, meta.CommaToken) - p.printMeta(nn.ArgumentList, meta.CloseParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList) io.WriteString(p.w, ")") + p.printFreeFloating(nn.ArgumentList, freefloating.End) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprStaticPropertyFetch(n node.Node) { nn := n.(*expr.StaticPropertyFetch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Class) - p.printMeta(nn, meta.PaamayimNekudotayimToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "::") p.Print(nn.Property) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprTernary(n node.Node) { nn := n.(*expr.Ternary) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Condition) - p.printMeta(nn, meta.QuestionMarkToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, "?") if nn.IfTrue != nil { p.Print(nn.IfTrue) } + p.printFreeFloating(nn, freefloating.True) - p.printMeta(nn, meta.ColonToken) io.WriteString(p.w, ":") p.Print(nn.IfFalse) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprUnaryMinus(n node.Node) { nn := n.(*expr.UnaryMinus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "-") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprUnaryPlus(n node.Node) { nn := n.(*expr.UnaryPlus) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "+") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprVariable(n node.Node) { nn := n.(*expr.Variable) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Dollar) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "$") } p.Print(nn.VarName) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprVariableWithoutLeadingDollar(n node.Node) { nn := n.(*expr.Variable) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.VarName) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprYieldFrom(n node.Node) { nn := n.(*expr.YieldFrom) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "yield from") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printExprYield(n node.Node) { nn := n.(*expr.Yield) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "yield") if nn.Key != nil { - if len((*nn.Key.GetMeta())) == 0 { + if nn.Key.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Key) - p.printMeta(nn, meta.DoubleArrowToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, "=>") } else { - if len((*nn.Value.GetMeta())) == 0 { + if nn.Value.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } // smtm func (p *Printer) printStmtAltElseIf(n node.Node) { nn := n.(*stmt.AltElseIf) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "elseif") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.ElseIf) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 { p.printNodes(s) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltElse(n node.Node) { nn := n.(*stmt.AltElse) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "else") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Else) io.WriteString(p.w, ":") if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 { p.printNodes(s) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltFor(n node.Node) { nn := n.(*stmt.AltFor) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "for") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.For) io.WriteString(p.w, "(") p.joinPrint(",", nn.Init) - p.printMeta(nn, meta.ForInitSemicolonToken) + p.printFreeFloating(nn, freefloating.InitExpr) io.WriteString(p.w, ";") p.joinPrint(",", nn.Cond) - p.printMeta(nn, meta.ForCondSemicolonToken) + p.printFreeFloating(nn, freefloating.CondExpr) io.WriteString(p.w, ";") p.joinPrint(",", nn.Loop) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.IncExpr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") s := nn.Stmt.(*stmt.StmtList) p.printNodes(s.Stmts) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.EndforToken) io.WriteString(p.w, "endfor") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltForeach(n node.Node) { nn := n.(*stmt.AltForeach) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "foreach") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Foreach) io.WriteString(p.w, "(") p.Print(nn.Expr) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.AsToken) io.WriteString(p.w, "as") if nn.Key != nil { - if len((*nn.Key.GetMeta())) == 0 { + if nn.Key.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Key) - p.printMeta(nn, meta.DoubleArrowToken) + p.printFreeFloating(nn, freefloating.Key) io.WriteString(p.w, "=>") } else { - if len((*nn.Variable.GetMeta())) == 0 { + if nn.Variable.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.Variable) + p.printFreeFloating(nn, freefloating.Var) - p.printMeta(nn, meta.CloseParenthesisToken) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) - io.WriteString(p.w, ":") + p.printFreeFloating(nn, freefloating.Cond) + io.WriteString(p.w, ":") s := nn.Stmt.(*stmt.StmtList) p.printNodes(s.Stmts) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.EndforeachToken) io.WriteString(p.w, "endforeach") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltIf(n node.Node) { nn := n.(*stmt.AltIf) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "if") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.If) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") s := nn.Stmt.(*stmt.StmtList) @@ -2005,100 +2013,106 @@ func (p *Printer) printStmtAltIf(n node.Node) { p.Print(nn.Else) } - p.printMeta(nn, meta.EndifToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "endif") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltSwitch(n node.Node) { nn := n.(*stmt.AltSwitch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "switch") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Switch) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") - p.printMeta(nn.CaseList, meta.CaseSeparatorToken) - s := nn.CaseList.Cases - p.printNodes(s) + p.printFreeFloating(nn.CaseList, freefloating.Start) + p.printFreeFloating(nn.CaseList, freefloating.CaseListStart) + p.printNodes(nn.CaseList.Cases) + p.printFreeFloating(nn.CaseList, freefloating.CaseListEnd) + p.printFreeFloating(nn.CaseList, freefloating.End) - p.printMeta(nn, meta.EndswitchToken) io.WriteString(p.w, "endswitch") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtAltWhile(n node.Node) { nn := n.(*stmt.AltWhile) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "while") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.While) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") s := nn.Stmt.(*stmt.StmtList) p.printNodes(s.Stmts) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.EndwhileToken) io.WriteString(p.w, "endwhile") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtBreak(n node.Node) { nn := n.(*stmt.Break) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "break") if nn.Expr != nil { - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) } + p.printFreeFloating(nn, freefloating.Expr) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtCase(n node.Node) { nn := n.(*stmt.Case) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "case") - if len((*nn.Cond.GetMeta())) == 0 { + if nn.Cond.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Cond) - r := p.printMeta(nn, meta.CaseSeparatorToken) - if !r { + p.printFreeFloating(nn, freefloating.Expr) + p.printFreeFloating(nn, freefloating.CaseSeparator) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ":") } @@ -2106,271 +2120,276 @@ func (p *Printer) printStmtCase(n node.Node) { p.printNodes(nn.Stmts) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtCatch(n node.Node) { nn := n.(*stmt.Catch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "catch") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Catch) io.WriteString(p.w, "(") p.joinPrint("|", nn.Types) p.Print(nn.Variable) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, ")") - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtClassMethod(n node.Node) { nn := n.(*stmt.ClassMethod) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Modifiers != nil { for k, m := range nn.Modifiers { - if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + if k > 0 && m.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(m) } - if len((*nn.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } - p.printMeta(nn, meta.FunctionToken) + p.printFreeFloating(nn, freefloating.ModifierList) io.WriteString(p.w, "function") + p.printFreeFloating(nn, freefloating.Function) if nn.ReturnsRef { - if len((*nn.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.AmpersandToken) io.WriteString(p.w, "&") + p.printFreeFloating(nn, freefloating.Ampersand) } else { - if len((*nn.MethodName.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.MethodName) - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "(") p.joinPrint(",", nn.Params) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ParameterList) io.WriteString(p.w, ")") + p.printFreeFloating(nn, freefloating.Params) if nn.ReturnType != nil { - p.printMeta(nn.ReturnType, meta.ColonToken) io.WriteString(p.w, ":") p.Print(nn.ReturnType) } p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtClass(n node.Node) { nn := n.(*stmt.Class) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Modifiers != nil { for k, m := range nn.Modifiers { - if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + if k > 0 && m.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(m) } - if len((*nn.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } - p.printMeta(nn, meta.ClassToken) + p.printFreeFloating(nn, freefloating.ModifierList) io.WriteString(p.w, "class") + p.printFreeFloating(nn, freefloating.Class) if nn.ClassName != nil { - if len((*nn.ClassName.GetMeta())) == 0 { + if nn.ClassName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.ClassName) } if nn.ArgumentList != nil { - p.printMeta(nn.ArgumentList, meta.OpenParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.Start) io.WriteString(p.w, "(") p.joinPrint(",", nn.ArgumentList.Arguments) - p.printMeta(nn.ArgumentList, meta.CommaToken) - p.printMeta(nn.ArgumentList, meta.CloseParenthesisToken) + p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList) io.WriteString(p.w, ")") + p.printFreeFloating(nn.ArgumentList, freefloating.End) } if nn.Extends != nil { - p.printMeta(nn.Extends, meta.NodeStart) - if len((*nn.Extends.GetMeta())) == 0 { + p.printFreeFloating(nn.Extends, freefloating.Start) + if nn.Extends.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn.Extends, meta.ExtendsToken) io.WriteString(p.w, "extends") - if len((*nn.Extends.ClassName.GetMeta())) == 0 { + if nn.Extends.ClassName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Extends.ClassName) } if nn.Implements != nil { - p.printMeta(nn.Implements, meta.NodeStart) - if len((*nn.Implements.GetMeta())) == 0 { + p.printFreeFloating(nn.Implements, freefloating.Start) + if nn.Implements.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn.Implements, meta.ImplementsToken) io.WriteString(p.w, "implements") - if len((*nn.Implements.InterfaceNames[0].GetMeta())) == 0 { + if nn.Implements.InterfaceNames[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Implements.InterfaceNames) } - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtClassConstList(n node.Node) { nn := n.(*stmt.ClassConstList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Modifiers != nil { for k, m := range nn.Modifiers { - if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + if k > 0 && m.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(m) } - if len((*nn.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } - p.printMeta(nn, meta.ConstToken) + p.printFreeFloating(nn, freefloating.ModifierList) io.WriteString(p.w, "const") - if len((*nn.Consts[0].GetMeta())) == 0 { + if nn.Consts[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Consts) + p.printFreeFloating(nn, freefloating.ConstList) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtConstList(n node.Node) { nn := n.(*stmt.ConstList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "const") - if len((*nn.Consts[0].GetMeta())) == 0 { + if nn.Consts[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Consts) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtConstant(n node.Node) { nn := n.(*stmt.Constant) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.ConstantName) - p.printMeta(nn, meta.EqualToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "=") p.Print(nn.Expr) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtContinue(n node.Node) { nn := n.(*stmt.Continue) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "continue") if nn.Expr != nil { - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) } + p.printFreeFloating(nn, freefloating.Expr) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtDeclare(n node.Node) { nn := n.(*stmt.Declare) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "declare") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Declare) io.WriteString(p.w, "(") p.joinPrint(",", nn.Consts) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ConstList) io.WriteString(p.w, ")") if nn.Alt { - p.printMeta(nn, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Cond) io.WriteString(p.w, ":") s := nn.Stmt.(*stmt.StmtList) p.printNodes(s.Stmts) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.EnddeclareToken) io.WriteString(p.w, "enddeclare") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.AltEnd) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - } else { p.Print(nn.Stmt) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtDefault(n node.Node) { nn := n.(*stmt.Default) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "default") - r := p.printMeta(nn, meta.CaseSeparatorToken) - if !r { + p.printFreeFloating(nn, freefloating.Default) + p.printFreeFloating(nn, freefloating.CaseSeparator) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ":") } @@ -2378,317 +2397,333 @@ func (p *Printer) printStmtDefault(n node.Node) { p.printNodes(nn.Stmts) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtDo(n node.Node) { nn := n.(*stmt.Do) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "do") if _, ok := nn.Stmt.(*stmt.StmtList); !ok { - if len((*nn.Stmt.GetMeta())) == 0 { + if nn.Stmt.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.Stmt) + p.printFreeFloating(nn, freefloating.Stmts) - p.printMeta(nn, meta.WhileToken) io.WriteString(p.w, "while") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.While) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Cond) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtEcho(n node.Node) { nn := n.(*stmt.Echo) if p.s == HtmlState { - if len((*n.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "=") } p.SetState(PhpState) } else { - if len((*n.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "echo") } - if len((*nn.Exprs[0].GetMeta())) == 0 { + if nn.Exprs[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) + p.printFreeFloating(nn, freefloating.Echo) p.joinPrint(",", nn.Exprs) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtElseif(n node.Node) { nn := n.(*stmt.ElseIf) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "elseif") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.ElseIf) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtElse(n node.Node) { nn := n.(*stmt.Else) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "else") if _, ok := nn.Stmt.(*stmt.StmtList); !ok { - if len((*nn.Stmt.GetMeta())) == 0 { + if nn.Stmt.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtExpression(n node.Node) { nn := n.(*stmt.Expression) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Expr) + p.printFreeFloating(nn, freefloating.Expr) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtFinally(n node.Node) { nn := n.(*stmt.Finally) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "finally") - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Finally) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtFor(n node.Node) { nn := n.(*stmt.For) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "for") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.For) io.WriteString(p.w, "(") p.joinPrint(",", nn.Init) - p.printMeta(nn, meta.ForInitSemicolonToken) + p.printFreeFloating(nn, freefloating.InitExpr) io.WriteString(p.w, ";") p.joinPrint(",", nn.Cond) - p.printMeta(nn, meta.ForCondSemicolonToken) + p.printFreeFloating(nn, freefloating.CondExpr) io.WriteString(p.w, ";") p.joinPrint(",", nn.Loop) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.IncExpr) io.WriteString(p.w, ")") p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtForeach(n node.Node) { nn := n.(*stmt.Foreach) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "foreach") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Foreach) io.WriteString(p.w, "(") + p.Print(nn.Expr) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.AsToken) + io.WriteString(p.w, "as") if nn.Key != nil { - if len((*nn.Key.GetMeta())) == 0 { + if nn.Key.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Key) - p.printMeta(nn, meta.DoubleArrowToken) + p.printFreeFloating(nn, freefloating.Key) io.WriteString(p.w, "=>") } else { - if len((*nn.Variable.GetMeta())) == 0 { + if nn.Variable.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } - p.Print(nn.Variable) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Var) + io.WriteString(p.w, ")") p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtFunction(n node.Node) { nn := n.(*stmt.Function) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "function") + p.printFreeFloating(nn, freefloating.Function) if nn.ReturnsRef { - if len((*nn.GetMeta())) == 0 { + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.AmpersandToken) io.WriteString(p.w, "&") } else { - if len((*nn.FunctionName.GetMeta())) == 0 { + if nn.FunctionName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } p.Print(nn.FunctionName) + p.printFreeFloating(nn, freefloating.Name) - p.printMeta(nn, meta.OpenParenthesisToken) io.WriteString(p.w, "(") p.joinPrint(",", nn.Params) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.ParamList) io.WriteString(p.w, ")") + p.printFreeFloating(nn, freefloating.Params) if nn.ReturnType != nil { - p.printMeta(nn.ReturnType, meta.ColonToken) io.WriteString(p.w, ":") p.Print(nn.ReturnType) } + p.printFreeFloating(nn, freefloating.ReturnType) - p.printMeta(nn, meta.OpenCurlyBracesToken) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtGlobal(n node.Node) { nn := n.(*stmt.Global) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "global") p.joinPrint(",", nn.Vars) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.VarList) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtGoto(n node.Node) { nn := n.(*stmt.Goto) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "goto") - if len((*nn.Label.GetMeta())) == 0 { + if nn.Label.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Label) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Label) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtGroupUse(n node.Node) { nn := n.(*stmt.GroupUse) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "use") + p.printFreeFloating(nn, freefloating.Use) if nn.UseType != nil { - if len((*nn.UseType.GetMeta())) == 0 { + if nn.UseType.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.UseType) } - if len((*nn.Prefix.GetMeta())) == 0 { + if nn.Prefix.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Prefix) - p.printMeta(nn, meta.NsSeparatorToken) io.WriteString(p.w, "\\") - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Slash) + io.WriteString(p.w, "{") p.joinPrint(",", nn.UseList) - p.printMeta(nn, meta.CommaToken) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.UseDeclarationList) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtHaltCompiler(n node.Node) { nn := n.(*stmt.HaltCompiler) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "__halt_compiler") - p.printMeta(n, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.HaltCompiller) io.WriteString(p.w, "(") - p.printMeta(n, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.OpenParenthesisToken) io.WriteString(p.w, ")") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.CloseParenthesisToken) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtIf(n node.Node) { nn := n.(*stmt.If) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "if") - p.printMeta(n, meta.OpenParenthesisToken) + p.printFreeFloating(n, freefloating.If) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(n, meta.CloseParenthesisToken) + p.printFreeFloating(n, freefloating.Expr) io.WriteString(p.w, ")") p.Print(nn.Stmt) @@ -2701,362 +2736,379 @@ func (p *Printer) printStmtIf(n node.Node) { p.Print(nn.Else) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtInlineHTML(n node.Node) { nn := n.(*stmt.InlineHtml) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) - if p.s == PhpState && len(n.GetMeta().FindBy(meta.ValueFilter("?>"))) == 0 { + if p.s == PhpState && nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, "?>") } p.SetState(HtmlState) io.WriteString(p.w, nn.Value) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtInterface(n node.Node) { nn := n.(*stmt.Interface) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "interface") - if len((*nn.InterfaceName.GetMeta())) == 0 { + if nn.InterfaceName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.InterfaceName) if nn.Extends != nil { - p.printMeta(nn.Extends, meta.NodeStart) - if len((*nn.Extends.GetMeta())) == 0 { + p.printFreeFloating(nn.Extends, freefloating.Start) + if nn.Extends.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn.Extends, meta.ExtendsToken) io.WriteString(p.w, "extends") - if len((*nn.Extends.InterfaceNames[0].GetMeta())) == 0 { + if nn.Extends.InterfaceNames[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Extends.InterfaceNames) } - p.printMeta(n, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(n, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtLabel(n node.Node) { nn := n.(*stmt.Label) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.LabelName) - p.printMeta(n, meta.ColonToken) + p.printFreeFloating(nn, freefloating.Label) + io.WriteString(p.w, ":") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtNamespace(n node.Node) { nn := n.(*stmt.Namespace) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "namespace") if nn.NamespaceName != nil { - if len((*nn.GetMeta())) == 0 { + if nn.NamespaceName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.NamespaceName) } if nn.Stmts != nil { - p.printMeta(n, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Namespace) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(n, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") } else { - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtNop(n node.Node) { - p.printMeta(n, meta.NodeStart) - if len((*n.GetMeta())) == 0 { + p.printFreeFloating(n, freefloating.Start) + p.printFreeFloating(n, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(n, meta.NodeEnd) + p.printFreeFloating(n, freefloating.End) } func (p *Printer) printStmtPropertyList(n node.Node) { nn := n.(*stmt.PropertyList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) for k, m := range nn.Modifiers { - if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + if k > 0 && m.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(m) } - if len((*nn.Properties[0].GetMeta())) == 0 { + if nn.Properties[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Properties) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(n, freefloating.PropertyList) + + p.printFreeFloating(n, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtProperty(n node.Node) { nn := n.(*stmt.Property) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) if nn.Expr != nil { - p.printMeta(n, meta.EqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "=") p.Print(nn.Expr) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtReturn(n node.Node) { nn := n.(*stmt.Return) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "return") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr != nil && nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtStaticVar(n node.Node) { nn := n.(*stmt.StaticVar) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Variable) if nn.Expr != nil { - p.printMeta(nn, meta.EqualToken) + p.printFreeFloating(nn, freefloating.Var) io.WriteString(p.w, "=") p.Print(nn.Expr) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtStatic(n node.Node) { nn := n.(*stmt.Static) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "static") + p.joinPrint(",", nn.Vars) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.VarList) + + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtStmtList(n node.Node) { nn := n.(*stmt.StmtList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtSwitch(n node.Node) { nn := n.(*stmt.Switch) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "switch") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Switch) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") - p.printMeta(nn.CaseList, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn.CaseList, freefloating.Start) io.WriteString(p.w, "{") - p.printMeta(nn.CaseList, meta.CaseSeparatorToken) + p.printFreeFloating(nn.CaseList, freefloating.CaseListStart) p.printNodes(nn.CaseList.Cases) - p.printMeta(nn.CaseList, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn.CaseList, freefloating.CaseListEnd) io.WriteString(p.w, "}") + p.printFreeFloating(nn.CaseList, freefloating.End) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtThrow(n node.Node) { nn := n.(*stmt.Throw) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "throw") - if len((*nn.Expr.GetMeta())) == 0 { + if nn.Expr.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Expr) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Expr) + + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTraitAdaptationList(n node.Node) { nn := n.(*stmt.TraitAdaptationList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "{") p.printNodes(nn.Adaptations) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.AdaptationList) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTraitMethodRef(n node.Node) { nn := n.(*stmt.TraitMethodRef) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.Trait != nil { p.Print(nn.Trait) - p.printMeta(nn, meta.PaamayimNekudotayimToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "::") } + p.Print(nn.Method) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTraitUseAlias(n node.Node) { nn := n.(*stmt.TraitUseAlias) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Ref) - p.printMeta(nn, meta.AsToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Ref) + + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } io.WriteString(p.w, "as") if nn.Modifier != nil { - if len((*nn.Modifier.GetMeta())) == 0 { + if nn.Modifier.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Modifier) } if nn.Alias != nil { - if len((*nn.Alias.GetMeta())) == 0 { + if nn.Alias.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Alias) } + p.printFreeFloating(nn, freefloating.Alias) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTraitUsePrecedence(n node.Node) { nn := n.(*stmt.TraitUsePrecedence) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) p.Print(nn.Ref) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.Ref) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.InsteadofToken) + io.WriteString(p.w, "insteadof") - if len((*nn.Insteadof[0].GetMeta())) == 0 { + if nn.Insteadof[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Insteadof) + p.printFreeFloating(nn, freefloating.NameList) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTraitUse(n node.Node) { nn := n.(*stmt.TraitUse) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "use") - if len((*nn.Traits[0].GetMeta())) == 0 { + if nn.Traits[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Traits) p.Print(nn.TraitAdaptationList) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTrait(n node.Node) { nn := n.(*stmt.Trait) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "trait") - if len((*nn.TraitName.GetMeta())) == 0 { + if nn.TraitName.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.TraitName) - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Name) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtTry(n node.Node) { nn := n.(*stmt.Try) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "try") - p.printMeta(nn, meta.OpenCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Try) io.WriteString(p.w, "{") p.printNodes(nn.Stmts) - p.printMeta(nn, meta.CloseCurlyBracesToken) + p.printFreeFloating(nn, freefloating.Stmts) io.WriteString(p.w, "}") if nn.Catches != nil { @@ -3067,93 +3119,97 @@ func (p *Printer) printStmtTry(n node.Node) { p.Print(nn.Finally) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtUnset(n node.Node) { nn := n.(*stmt.Unset) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "unset") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.Unset) io.WriteString(p.w, "(") p.joinPrint(",", nn.Vars) - p.printMeta(nn, meta.CommaToken) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.VarList) io.WriteString(p.w, ")") - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.CloseParenthesisToken) + + p.printFreeFloating(nn, freefloating.SemiColon) + if n.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtUseList(n node.Node) { nn := n.(*stmt.UseList) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "use") if nn.UseType != nil { - if len((*nn.UseType.GetMeta())) == 0 { + if nn.UseType.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.UseType) } - if len((*nn.Uses[0].GetMeta())) == 0 { + if nn.Uses[0].GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.joinPrint(",", nn.Uses) - p.printMeta(nn, meta.SemiColonToken) - if len((*nn.GetMeta())) == 0 { + p.printFreeFloating(nn, freefloating.UseDeclarationList) + + p.printFreeFloating(nn, freefloating.SemiColon) + if nn.GetFreeFloating().IsEmpty() { io.WriteString(p.w, ";") } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtUse(n node.Node) { nn := n.(*stmt.Use) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) if nn.UseType != nil { p.Print(nn.UseType) - if len((*nn.GetMeta())) == 0 { + if nn.UseType.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } } + p.printFreeFloating(nn, freefloating.Slash) + p.Print(nn.Use) if nn.Alias != nil { - if len((*nn.GetMeta())) == 0 { + if nn.Alias.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } - p.printMeta(nn, meta.AsToken) io.WriteString(p.w, "as") - if len((*nn.Alias.GetMeta())) == 0 { + if nn.Alias.GetFreeFloating().IsEmpty() { io.WriteString(p.w, " ") } p.Print(nn.Alias) } - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } func (p *Printer) printStmtWhile(n node.Node) { nn := n.(*stmt.While) - p.printMeta(nn, meta.NodeStart) + p.printFreeFloating(nn, freefloating.Start) io.WriteString(p.w, "while") - p.printMeta(nn, meta.OpenParenthesisToken) + p.printFreeFloating(nn, freefloating.While) io.WriteString(p.w, "(") p.Print(nn.Cond) - p.printMeta(nn, meta.CloseParenthesisToken) + p.printFreeFloating(nn, freefloating.Expr) io.WriteString(p.w, ")") p.Print(nn.Stmt) - p.printMeta(nn, meta.NodeEnd) + p.printFreeFloating(nn, freefloating.End) } diff --git a/printer/printer_parsed_php5_test.go b/printer/printer_parsed_php5_test.go index 8f8b958..7c074f9 100644 --- a/printer/printer_parsed_php5_test.go +++ b/printer/printer_parsed_php5_test.go @@ -463,9 +463,11 @@ func TestParseAndPrintPhp5Exit(t *testing.T) { src := `HTML"}, &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, + FreeFloating: freefloating.Collection{ + freefloating.Start: []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: "$", + }, }, }, VarName: &node.Identifier{ @@ -95,11 +95,12 @@ func TestPrinterPrintFileInlineHtml(t *testing.T) { &stmt.InlineHtml{Value: "